2011-07-14 82 views
2

我配置像ssh命令键(在远程mashine M1):如何将参数传递给SSH命令?

command="/usr/bin/nslookup",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss DEADBEEFDEADBEEF= [email protected] 

为了允许在NSLOOKUP M1从客户机C1运行。它的工作原理,我可以运行:

C1> ssh -i mylookup_key M1 

,我得到(M1)上使用nslookup执行,但我需要传递参数,以获得真正的工作。我如何将参数传递给ssh命令键?

p.d:我使用nslookup作为我想要执行的真实程序的一个示例。

+0

只要把参数字符串中的 “在/ usr/bin中/ NSLOOKUP” 之后? – Jacob

+0

太棒了,它可以工作,但是当iI尝试在命令中使用参数(如“-h”和ssh作为自己的参数时),我会收到错误。 – Zhen

回答

5

看看在$SSH_ORIGINAL_COMMAND变量,它应该包含传递给ssh命令。例如:

command="/usr/bin/nslookup $SSH_ORIGINAL_COMMAND",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss DEADBEEFDEADBEEF= [email protected] 

然后尝试:

$ ssh -i mylookup_key M1 stackoverflow.com 
0

您是否试过在'"附上命令? Soemthing像

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 

这意味着它的工作原理

0

如果我理解正确的话你只是想在远程机器上运行命令。 简单的情况是只传递命令的最后一个参数到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 
相关问题