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