说明:可以做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(以上内容部分转自此篇文章)