SSH无法将特定命令传递给远程路由器

时间:2014-08-21 22:49:07

标签: ssh

我正在尝试在网络中的远程路由器上运行命令“iwlist wlan0 scan”。我尝试了以下SSH命令

ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 iwlist wlan0 scan
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 "iwlist wlan0 scan"
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 `iwlist wlan0 scan
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 \`iwlist wlan0 scan\`
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 \"iwlist wlan0 scan\"*

但所有这些命令都会导致以下错误:

ash: iwlist: not found

然而,当我实际使用命令

登录路由器时
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 

我运行“iwlist wlan0 scan”它可以工作,我可以看到周围的接入点列表。这意味着我的路由器上实际上可以使用“iwlist”,但我无法正确地将其传递给路由器。当我运行以下命令时

ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 ls
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 pwd 
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 uname -n

如果我跑

,他们的工作完全正常
ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 route -n 

它不起作用,但如果我登录路由器并运行“route -n”,我将得到结果。所以我猜SSH正在选择我的哪一个命令通过,哪一个不通过。关于如何解决这个问题的任何想法?

谢谢,

1 个答案:

答案 0 :(得分:1)

登录时可能没有设置相同的环境变量(例如PATH),而没有登录时运行命令。

尝试以下操作:找出命令的位置。如果你很幸运,你可以运行which route(取决于路由器上unix的数量)。

找到命令的完整路径后,请尝试指定该命令。例如,如果which route显示/sbin/route,请尝试使用route替换命令中的/sbin/route - 例如ssh -o IdentityFile=~/Dropbox/ALI/id_rsa -l root 172.20.125.162 /sbin/route -n