URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 78482
[ Назад ]

Исходное сообщение
"Помогите справиться с ssh <hostname> -n <command>"

Отправлено rav , 30-Янв-08 11:40 
Здраствуйте!
Имеется вычислительный кластер, SuSE 9, настроен ssh на беспарольный доступ к любому узлу, все работает, но есть одна проблема...
Если зайти на узел командой
$ssh node-1
и запустить на нем
$env | grep $PATH
получаем результат
MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/share/man
GNOME2_PATH=/usr/local:/opt/gnome:/usr
GNOME_PATH=:/opt/gnome:/usr
XNLSPATH=/usr/X11R6/lib/X11/nls
PATH=/share/mpiexec/bin:/home/davydovk/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/local/ofed/bin:/usr/local/ofed/sbin:/share/lam/bin
GTK_PATH=/usr/local/lib64/gtk-2.0:/opt/gnome/lib64/gtk-2.0:/usr/lib64/gtk-2.0
PKG_CONFIG_PATH=/opt/gnome/lib64/pkgconfig
ACLOCAL_PATH=/opt/gnome/share/aclocal
INFOPATH=/usr/local/info:/usr/share/info:/usr/info:/opt/gnome/share/info

однако если не заходить на узел, а просто запустить
$ssh node-1 env | grep $PATH
получаем
PATH=/usr/bin:/bin:/usr/sbin:/sbin

а вот что дает команда
$ssh node-1 echo $PATH

/share/mpiexec/bin:/home/davydovk/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/local/ofed/bin:/usr/local/ofed/sbin:/usr/sbin:/share/lam/bin

Как заставить ssh правильно передавать значения переменных среды? В /etc/profile прописываю, в $HOME/.profile прописываю. Оболочка везде bash.
Дело в том, что в переменной $PATH не отображаются нужные директории, в результате нестандартные команды на узлах запускаются только при указании полного пути...

Второй вопрос, почему env и echo $PATH выдают разные значения? Переменная то одна...
Спасибо.

P.S.: ssh работает правильно,
$ssh node-1 hostname
выдает
node-1


Содержание

Сообщения в этом обсуждении
"Помогите справиться с ssh <hostname> -n <command>"
Отправлено rav , 30-Янв-08 12:37 
>[оверквотинг удален]
>
>
>Второй вопрос, почему env и echo $PATH выдают разные значения? Переменная то
>одна...
>Спасибо.
>
>P.S.: ssh работает правильно,
>$ssh node-1 hostname
>выдает
>node-1

Частично помогло создание файлика $HOME/.ssh/enviroment и запись туда переменной PATH.
По-моему, глюки PAM в SuSE. В /etc/ssh/sshd_config параметры PermitUserEnviroment=yes и AcceptEnv=PATH, но они не передаются, хоть убей...


"Помогите справиться с ssh <hostname> -n <command>"
Отправлено angra , 31-Янв-08 12:29 
Налицо серьезные пробелы в знании шелла. Учится учится и еще раз учится. Можно начать с ABS. Особое внимание обратить на экранирование и перенаправление потоков.


"Помогите справиться с ssh <hostname> -n <command>"
Отправлено anonymous , 01-Фев-08 03:57 
>$ssh node-1 echo $PATH

Подумайте:
* в какой момент расширяется переменная $PATH?
* какая команда передаётся на удалённую систему?


"Помогите справиться с ssh <hostname> -n <command>"
Отправлено rav , 01-Фев-08 06:56 
>>$ssh node-1 echo $PATH
>
>Подумайте:
>* в какой момент расширяется переменная $PATH?
>* какая команда передаётся на удалённую систему?

Спасибо. С этим уже разобрался :-) Вопрос в том, как заставить при выполнении команды запускать /etc/profile и т.п. Запуск вручную типа
ssh node-1 'bash /etc/profile; my_command'
не подходит...