From edc4bf6a479c9e955c1b35855782e8d86e73e8d2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Wed, 23 Feb 2011 16:31:28 +0100 Subject: [PATCH] add template for cdist-explorer-remote-run Signed-off-by: Nico Schottelius --- conf/helper/cdist-explorer-remote-run | 71 +++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 conf/helper/cdist-explorer-remote-run diff --git a/conf/helper/cdist-explorer-remote-run b/conf/helper/cdist-explorer-remote-run new file mode 100755 index 00000000..dd0886e0 --- /dev/null +++ b/conf/helper/cdist-explorer-remote-run @@ -0,0 +1,71 @@ +#!/bin/sh +# +# 2010-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 . +# +# +# FIXME: Replace * references: * breaks if there is no explorer +# or FIXME: check that there is at least one explorer? +# + + +. cdist-config +if [ $# -lt 3 ]; then + __cdist_usage " [explorer args]" +fi +set -ue + +__cdist_target_host="$1"; shift +__cdist_remote_src_dir="$1"; shift +__cdist_remote_dst_dir="$1"; shift + +# Create remote destination directory +ssh "${__cdist_remote_user}@${__cdist_target_host}" \ + "mkdir -p \"${__cdist_remote_dst_dir}\"" + +# FIXME: enable -q as soon as the code is cleaned up +cd "${__cdist_local_src_dir}" + +# Ensure there is at least one explorer +num="$(ls -1 | wc -l)" +if [ "$num" -lt 1 ]; then + __cdist_exit_err "${__cdist_local_src_dir}: Contains no explorers" +fi + +# Execute all explorers +for explorer in *; do + if [ -f "$explorer" ]; then + if [ ! -x "$explorer" ]; then + echo "Explorer \"$explorer\" exists, but is not executable." + continue + fi + + # Execute explorers and save results in remote destination directory + ssh "${__cdist_remote_user}@${__cdist_target_host}" \ + "cd \"${__cdist_remote_src_dir}\" && \"./$explorer\" > \ + \"${__cdist_remote_dst_dir}/${explorer}\"" "$@" + else + if [ -e "$explorer" ]; then + echo "Explorer \"$explorer\" exists, but is not a file." + continue + fi + fi +done + +# Copy results back to us +scp "${__cdist_remote_user}@${__cdist_target_host}:${__cdist_remote_dst_dir}/*" \ + "$__cdist_local_dst_dir"