The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как передать переменные по ssh"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как передать переменные по ssh"  +/
Сообщение от musinov email(ok) on 30-Янв-12, 03:23 
Как передать созданные переменные окружения через ssh сессию на удаленный хост. При передаче команд подходят только одинарные кавычки, так как иначе часть команд для удаленного хоста выполняется локально. Может опцией SendEnv как-то можно? Подскажите, пожалуйста, кто в курсе.

Вот кусок кода:
ssh -q root@$IP_ADRS -p 22 '
            cd $REMOTE_TMP_DIR
            REMOTE_SW_FILE_CHECK="`md5sum -c $opt_select_sw_file.md5`"
            COUNT_CHAR_IN_FILE="`ls $opt_select_sw_file | tr -d [:space:] | wc -m`"
               if [ "${REMOTE_SW_FILE_CHECK:$[$COUNT_CHAR_IN_FILE + 2]:2}" = 'OK' ]; then
               echo 'Файл $opt_select_sw_file скопирован на сервер'
               cp ${REMOTE_TMP_DIR}${opt_select_sw_file} /data/dc/
               echo '***'
               echo 'Файл ${opt_select_sw_file} скопирован в папку /data/dc/.'
               echo '***'
               echo 'Готово.'
               echo '***'
               exit
            else
               echo 'File $opt_select_sw_file: checksum error.'
               md5sum -c $opt_select_sw_file.md5 > MD5_ERROR
               cat MD5_ERROR
               echo 'Файл скопирован с ошибками.'
               exit
            fi'

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как передать переменные по ssh"  +/
Сообщение от XAnder (ok) on 30-Янв-12, 09:28 
> ssh -q root@$IP_ADRS -p 22 '

Тут кавычка открылась...

> cd $REMOTE_TMP_DIR
> REMOTE_SW_FILE_CHECK="`md5sum -c $opt_select_sw_file.md5`"
> COUNT_CHAR_IN_FILE="`ls $opt_select_sw_file | tr -d [:space:] | wc -m`"
>    if [ "${REMOTE_SW_FILE_CHECK:$[$COUNT_CHAR_IN_FILE + 2]:2}" = 'OK' ]; then

...а вот тут закрылась, и потом открылась новая.

>    echo 'Файл $opt_select_sw_file скопирован на сервер'

Тут и несколько раз дальше фокус повторяется.

Это я к тому, что, во-первых, пример, скорее всего, нерабочий (не вчитывался в суть). А во-вторых, открытие и закрытие кавычек можно использовать себе на пользу. Хотите, чтобы переменные сначала разворачивались в свои значения, а потом уже значения подставлялись в команду? Тогда не заключайте их в одинарные кавычки. Подробности, как обычно, в man sh.

$ echo 'foo $bar'"$PATH"'$foo bar'

Сколько здесь аргументов у команды echo? Что она выведет и почему?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как передать переменные по ssh"  +/
Сообщение от musin on 30-Янв-12, 14:08 
>[оверквотинг удален]
> ...а вот тут закрылась, и потом открылась новая.
>>    echo 'Файл $opt_select_sw_file скопирован на сервер'
> Тут и несколько раз дальше фокус повторяется.
> Это я к тому, что, во-первых, пример, скорее всего, нерабочий (не вчитывался
> в суть). А во-вторых, открытие и закрытие кавычек можно использовать себе
> на пользу. Хотите, чтобы переменные сначала разворачивались в свои значения, а
> потом уже значения подставлялись в команду? Тогда не заключайте их в
> одинарные кавычки. Подробности, как обычно, в man sh.
>
$ echo 'foo $bar'"$PATH"'$foo bar'

> Сколько здесь аргументов у команды echo? Что она выведет и почему?

Дело в том, что мне в одной и той же строке нужно и переменные передать из текущего окружения, и выполнить команду в удаленном окружении.
вот простейший пример

>> cd $REMOTE_TMP_DIR

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как передать переменные по ssh"  +/
Сообщение от XAnder (ok) on 30-Янв-12, 14:58 
> Дело в том, что мне в одной и той же строке нужно
> и переменные передать из текущего окружения, и выполнить команду в удаленном
> окружении.
> вот простейший пример
>>> cd $REMOTE_TMP_DIR
>>
$ echo 'foo $bar'"$PATH"'$foo bar'

>> Сколько здесь аргументов у команды echo? Что она выведет и почему?

Гм... Отвечаю сам себе, раз уж... Аргумент здесь только один. Строки $foo и $bar будут выведены буквально (и их интерпретация будет зависеть от дальнейших действий, то есть от "удалённого окружения"), потому что они внутри одинарных кавычек. А вместо $PATH будет выведено значение этой переменной "из текущего окружения", потому что она внутри кавычек двойных.

PS. man sh и ворох статей о программировании на shell решат все ваши проблемы.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Как передать переменные по ssh"  +/
Сообщение от musin on 30-Янв-12, 15:16 
HY>> Дело в том, что мне в одной и той же строке нужно
>[оверквотинг удален]
>>>> cd $REMOTE_TMP_DIR
>>>
$ echo 'foo $bar'"$PATH"'$foo bar'

>>> Сколько здесь аргументов у команды echo? Что она выведет и почему?
> Гм... Отвечаю сам себе, раз уж... Аргумент здесь только один. Строки $foo
> и $bar будут выведены буквально (и их интерпретация будет зависеть от
> дальнейших действий, то есть от "удалённого окружения"), потому что они внутри
> одинарных кавычек. А вместо $PATH будет выведено значение этой переменной "из
> текущего окружения", потому что она внутри кавычек двойных.
> PS. man sh и ворох статей о программировании на shell решат все
> ваши проблемы.

спасибо!

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру