Отправка команд через ssh с параметрами - PullRequest
1 голос
/ 28 июля 2010

Я пытаюсь отправить команду через ssh с параметром, но оболочка не может правильно развернуть команду. Любые идеи, что я делаю не так с этим

for i in 71 72 73 74 75
do
    for server in server1 server2
    do
        somestr="Some String"
        echo "$server hdiskpower$i \c" ; ssh $server "lsattr -El hdiskpower$i |grep $somestr "
    done
done

Ответы [ 3 ]

1 голос
/ 14 ноября 2012

Если вы передаете некоторую переменную на удаленный сервер внутри команды, тогда эти переменные должны быть определены на этом удаленном сервере.

Например, если вы жестко закодировали команду в сценарии, например "echo "$server hdiskpower$i \c" ; ssh $server lsattr -El hdiskpower71 |grep XYZ", то она, безусловно, работаетдля вас.

А пока я буду работать над тем, чтобы это работало с переменными.

0 голосов
/ 25 января 2014

Я думаю, это то, что вам нужно: Сначала вам нужно установить sshpass на вашем компьютере. тогда вы можете написать свой собственный скрипт:

while read pass port user ip; do
sshpass -p$pass ssh -p $port $user@$ip <<ENDSSH1
    COMMAND 1
    .
    .
    .
    COMMAND n
ENDSSH1
done <<____HERE
    PASS    PORT    USER    IP
      .      .       .       .
      .      .       .       .
      .      .       .       .
    PASS    PORT    USER    IP    
____HERE
0 голосов
/ 28 июля 2010

Вы должны использовать параметр -t, чтобы настроить ssh на использование псевдо-tty.Если вы хотите выполнить эту команду на удаленной машине, вы должны сделать это

ssh $server -t "lsattr -El hdiskpower$i|grep $somestr"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...