說明:可以做SSH免密登錄之后執行,這樣可以省去每次執行輸入密碼的提示。
對於簡單的命令:
如果是簡單執行幾個命令,則:
ssh user@remoteNode "cd /home ; ls"
基本能完成常用的對於遠程節點的管理了,幾個注意的點:
- 雙引號,必須有。如果不加雙引號,第二個ls命令在本地執行
- 分號,兩個命令之間用分號隔開
- 多行命令可以輸入雙引號后回車,結尾使用雙引號包裹
對於腳本的方式:
有些遠程執行的命令內容較多,單一命令無法完成,考慮腳本方式實現:
#!/bin/bash ssh user@remoteNode > /dev/null 2>&1 << eeooff cd /home touch abcdefg.txt exit eeooff echo done!
遠程執行的內容在”<< eeooff“至”eeooff“之間,在遠程機器上的操作就位於其中,注意的點:
- << eeooff,ssh后直到遇到eeooff這樣的內容結束,eeooff可以隨便修改成其他形式。
- 重定向目的在於不顯示遠程的輸出了
- 在結束前,加exit退出遠程節點
執行本地的腳本
我們在本地創建一個腳本文件test.sh,內容為:
ls pwd
echo $0
然后運行下面的命令:
ssh root@xxx.xxx.xxx.xxx < test.sh
帶參數本地腳本
ssh root@xxx.xxx.xxx.xxx 'bash -s' < test.sh helloworld
執行遠程服務器上的腳本
ssh root@xxx.xxx.xxx.xxx "/home/nick/test.sh"
執行遠程服務器上帶參數的腳本
ssh root@xxx.xxx.xxx.xxx /home/nick/test.sh helloworld
參考:
http://www.cnblogs.com/ilfmonday/p/ShellRemote.html(以上內容部分轉自此篇文章)
https://www.cnblogs.com/sparkdev/p/6842805.html(以上內容部分轉自此篇文章)