From 188afa2777615335c42e1a2498ef8779cd8f4ab6 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 14 Jun 2011 01:44:40 +0200 Subject: [PATCH] add wrapper script to execute functions remotely Signed-off-by: Nico Schottelius --- bin/cdist-remote | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100755 bin/cdist-remote diff --git a/bin/cdist-remote b/bin/cdist-remote new file mode 100755 index 00000000..d95913ba --- /dev/null +++ b/bin/cdist-remote @@ -0,0 +1,68 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# This binary is executed on the remote side to execute explorers +# +# It supports different variables names to be used, so __explorers +# and __type_explorers can be submitted :-) +# + +. cdist-config +[ $# -eq 3 ] || __cdist_usage " " +set -ue + +# Variable that defines the home of the explorers +__cdist_variable_name="$1"; shift + +# Find explorers here +__cdist_explorer_dir="$1"; shift + +# Write output here +__cdist_my_out_dir="$1"; shift + +# Setup environment +export $__cdist_variable_name="$__cdist_explorer_dir" +export __global="$__cdist_remote_out_dir" + +mkdir -p "$__cdist_my_out_dir" + +# Ensure there is at least one explorer +num="$(ls -1 "$__cdist_explorer_dir" | wc -l)" +if [ "$num" -lt 1 ]; then + __cdist_exit_err "${__cdist_explorer_dir}: Contains no explorers" +fi + +# Execute all explorers +for explorer in "$__cdist_explorer_dir/"*; do + explorer_name="${explorer##*/}" + + if [ -f "$explorer" ]; then + if [ ! -x "$explorer" ]; then + __cdist_exit_err "Explorer \"$explorer\" exists, but is not executable." + fi + + # Execute explorers and save results in remote destination directory + "$explorer" > "${__cdist_my_out_dir}/$explorer_name" + else + if [ -e "$explorer" ]; then + __cdist_exit_err "Explorer \"$explorer\" exists, but is not a file." + fi + fi +done