В случаях, когда пользователи не имеют возможности залогинится на
batch nodes в кластере под управлением одной из batch submission
systems провести полноценную отладку и мониторинг становится
невозможным, тк встроенные "куцие" возможности батчёвых систем по
мониторингу заданий (обычно утилитой qstat) не дают полной информации
о системе и процессах на нодах. Администратор системы для удобства
может настроить ssh-аутентификацию по ключу без пароля, чем и можно
воспользоваться для удалённого запуска утилит. Ниже описывается вся
процедура:
* генерим RSA ключ для ssh-аутентификацию по ключу:
bash> ssh-keygen -t rsa # generate RSA keys for SSH protocol version 2
<Enter># enter empty passphrase (no passphrase)
bash> ssh-keygen -t rsa # generate RSA keys for SSH protocol version 2
... # enter empty passphrase (no passphrase)
bash> PUB_KEY=`cat $HOME/.ssh/id_rsa.pub`
bash> ssh sgeadmin@bn001 echo $PUB_KEY '>> $HOME/.ssh/authorized_keys2'
sgeadmin@bn001's password: # enter remote host password
bash> ssh sgeadmin@bn001
remotehost:bash> # voila! login without password
если в настройках удалённого ssh-сервера была разрешена аутентификация
по ключу, мы сможем залогиниться без ввода пароля, если нет,
попробуйте запустить клиента в verbose mode и заодно посмотреть лог на
удалённом хосте, ssh-сервер пишет в логах какие методы аутентификации
были опробованы. Аналогично копируем public-key на остальные ноды.
* создаём скрипт "туннелирующий" нужную утилиту и её вывод и запускаемый через sudo:
bash> cat > /home/sgeadmin/bin/cluster_utility_starter.sh
#!/bin/bash
function usage() {
echo "Usage: PROGRAM [OPTION]... [HOST]
Run a program from list:
${util_nm[*]}
on HOST from list:
$batch_host_list
Exit program by SIGINT/^C if a programm is looped.
-h print help and exit
-l List available hosts and exit"
}
# cluster work nodes
readonly batch_host_list="@bn001 @bn002 @bn003" # batch nodes
# util list for remote execution
util_nm[0]="Qtop"
util_cm[0]="/usr/bin/top b"
util_nm[1]="Qps"
util_cm[1]="/bin/ps"
util_nm[2]="Qfree"
util_cm[2]="/usr/bin/free"
util_nm[3]="Qvmstat"
util_cm[3]="/usr/bin/vmstat"
util_nm[4]="Qstat"
util_cm[4]="/usr/bin/stat"
util_nm[5]="Qls"
util_cm[5]="/bin/ls"
util_nm[6]="Qcat"
util_cm[6]="/bin/cat"
util_nm[7]="Qpstree"
util_cm[7]="/usr/bin/pstree"
if test $# -le 1
then usage $0
exit 1
fi
i=0
cmd_name="$1"
shift
util_name=""
while :; do
if test $i -ge ${#util_nm[*]}; then
echo >&2 "$cmd_name: no such command"
usage
exit 1
fi
if test "${util_nm[$i]}" == "$cmd_name"; then
util_name="${util_cm[$i]}"
break
fi
let $((++i))
done
host_name=""
options=""
while test $# -gt 0
do case "$1" in
-h) echo -e "Copyright (C) 2005 Alexey Filin\n"
usage
exit ;;
-l) echo -n "Available batch hosts: "
echo $batch_host_list
exit ;;
@*) if test -n "$host_name"; then
usage
exit
fi
for i in $batch_host_list; do
if test "$i" == "$1"; then
host_name="$1"
break
fi
done
if test -z "$host_name"; then
echo "$1: no such host name"
exit
fi
shift ;;
*) options="$options $1"
shift ;;
esac
done
if test -n $host_name; then
#echo ssh -x "sgeadmin$host_name" "sudo -u $SUDO_USER $util_name $options"
ssh -x "sgeadmin$host_name" "sudo -u $SUDO_USER $util_name $options"
else
usage
exit
fi
exit
^D
bash> chmod +x /home/sgeadmin/bin/cluster_utility_starter.sh
заметьте, что утилита на удалённом хосте запускается под пользователем
запустившим скрипт-обёртку описываемый ниже.

Ответ на:
настраиваем удалённый запуск утилит (продолжение)
от filin
Ответ на:
добавление
от anonymous

Ответ на:
добавление
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Работающий скрипт для скачивания с rutube.ru (2011)
- Форум Запустить приложение от имени другого пользователя по ssh (2014)
- Форум Запуск скрипта при старте (2017)
- Форум adonthell (2004)
- Форум скрипт помогите найти косяк (2007)
- Форум bash проверка на число (2022)
- Форум Скрипт запуска chromium (2010)
- Форум Найти виновника (2024)
- Форум Возможно ли в переменной $PATH использовать регулярки ? ($path regex) (2019)
- Форум X2GO Администрирование (2020)