2
我必须在远程服务器上运行一些用户定义的命令。所以我做了以下。它适用于许多命令,如crontab -l
,ls
,date +%s
,等等......不过,它不为ip addr
某些命令不能通过ssh在远程服务器上运行(shell)
工作时,我居然SSH INSIDE ip addr
正常工作的服务器。但是当我使用ssh执行它时,它没有。
这是我如何执行它。
$ sshpass -p myPassword ssh -q [email protected] 'ip addr' > $PWD/tmp
$ cat $PWD/tmp
同样,这适用于到目前为止除了ip addr
我试过的任何命令。 对于ip addr
它提供了以下输出
bash: ip: command not found
所以我想知道为什么,如果有什么不对我做....
而且,请不要sugges使用rsync
或其他任何非默认的linux命令,因为我工作的环境没有它们,我也没有安装权限。
预先感谢您
我明白了......所以你告诉我,当我通过ssh运行命令时,它具有“有限”访问权限?另外,有没有办法解决这个问题?或者它真的取决于我想通过ssh运行的命令。 – Masster
这并不是说它具有有限的访问权限,而是因为你以非交互方式运行,你可能需要自己做一些工作。在ip命令出现问题的情况下,可以使用命令调用PATH =/sbin:/ usr/sbin:$ PATH ip addr来解决这种情况。通过ssh远程复制它,然后通过ssh调用它,可以更好地完成对ssh的多个命令。这样你就可以添加一行设置PATH到脚本,因此只执行一次。 – Petesh
好吧,我明白了。因为我不知道用户想要执行什么操作,所以我可以在每个命令之前放置PATH =/sbin:/ usr/sbin:$ PATH?假设用户命令存储在'$ myCommand'中。我会简单地执行'sshpass -p mypass ssh [email protected]'PATH =/sbin:/ usr/sbin:$ PATH $ myCommand'' – Masster