Как передать параметры в команду SSH? - PullRequest
2 голосов
/ 14 июля 2011

Я настраиваю ключ команды ssh следующим образом (в удаленной машине M1):

command="/usr/bin/nslookup",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss DEADBEEFDEADBEEF= mycow@farm.org

Чтобы разрешить запуск nslookup в M1 с клиентского компьютера C1. Это работает, и я могу запустить:

C1> ssh -i mylookup_key M1

И я получаю выполнение nslookup на M1, но мне нужно передать параметры, чтобы получить реальную работу. Как передать параметры в командный ключ ssh?

p.d: я использую nslookup в качестве примера реальной программы, которую я хочу выполнить.

Ответы [ 3 ]

5 голосов
/ 14 июля 2011

Взгляните на переменную $SSH_ORIGINAL_COMMAND, которая должна содержать команду, переданную ssh. Например:

command="/usr/bin/nslookup $SSH_ORIGINAL_COMMAND",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss DEADBEEFDEADBEEF= mycow@farm.org

Тогда попробуйте:

$ ssh -i mylookup_key M1 stackoverflow.com
0 голосов
/ 14 июля 2011

Если я правильно понимаю, вы просто хотите выполнить команду на удаленной машине. Простой случай - просто передать команду как последний параметр в ssh

ssh -i mylookup_key M1 nslookup stackoverflow.com

Но, возможно, вам нужно быть осторожным с цитатами и специальными символами. например,

ssh -i mylookup_key M1 ./args.sh "1 2 3"
PROG:./args.sh
ARG[1]: 1
ARG[2]: 2
ARG[3]: 3
ssh -i mylookup_key M1 ./args.sh '"1 2 3"'
PROG:./args.sh
ARG[1]: 1 2 3
0 голосов
/ 14 июля 2011

Вы пытались заключить команду в ' или "? Что-то вроде

ssh host "ls -l -a .."

, что дает мне

total 12
drwxr-xr-x  3 root  root  4096 2011-06-16 12:33 .
drwxr-xr-x 22 root  root  4096 2011-06-16 13:40 ..
drwxr-xr-x 49 mihai mihai 4096 2011-07-14 10:33 mihai

означает, что это работает

...