Из Bash вы можете (сохранить в ~/.bashrc
или что-то):
function create-follower () {
local _NAME=$1;
local _USER=$2;
local _HOST=$3;
local _PATH=$4;
if ! [ "${_NAME}" ]\
|| ! [ "${_USER}" ]\
|| ! [ "${_HOST}" ]\
|| ! [ "${_PATH}" ] ; then
{ echo "Cannot create log follower." ;
echo;
echo "Usage: create-follower NAME USER HOST LOG-FILE";
} >&2;
return 1 ;
fi ;
eval "function ${_NAME}(){ ssh ${_USER}@${_HOST} tail -f \"${_PATH}\" & }"
}
function activate-followers () {
if (( $# < 1 )) ; then
{ echo "You must specify at least one follower to use" ;
echo ;
echo "Usage:" ;
echo " activate-followers follower1 [follower2 ... followerN]";
} >&2;
return 1 ;
fi ;
for FOLLOW in "${@}" ; do
${FOLLOW} ;
done ;
wait;
}
function stop-followers () {
if [ "$(jobs)" ] ; then
kill -9 $(jobs | perl -pe 's/\[([0-9]+)\].*/%$1/') ;
fi ;
}
А затем из вашей оболочки определите журналы, за которыми вы хотите следить:
[dsm@localhost:~]$ create-follower test1 user1 localhost /tmp/log-1.txt
[dsm@localhost:~]$ create-follower test2 user2 otherhost /tmp/log-2.txt
[dsm@localhost:~]$ create-follower test2 user3 remotebox /tmp/log-3.txt
Теперь активируйте подписчиков:
[dsm@localhost:~]$ activate-followers test1 test2 test3
Чтобы выйти из функции, используйте CTRL+C
, а для остановки фоновых процессов:
[dsm@localhost:~]$ stop-followers
ПРИМЕЧАНИЕ 1. Предполагается, что для ваших ящиков установлена аутентификация с открытым ключом.
ПРИМЕЧАНИЕ 2. Вам придется убить все задания, которые остались запущенными после выхода из функции активации-последователей. Возможно, вы захотите сделать это вручную, поскольку предоставленная функция убивает грубой силой ВСЕ фоновые задания
ПРИМЕЧАНИЕ 3: Предполагается, что работает юникс-подобная среда, которую вы можете получить, установив cygwin
Кто сказал, что вы не можете делать шутки в шеллскрипте; -)