shell远程执行:
经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了。
一下介绍两种shell命令远程执行的方法。
前提条件:
配置ssh免密码登陆
对于简单的命令:
如果是简单执行几个命令,则:
ssh user@remoteNode "cd /home ; ls"
基本能完成常用的对于远程节点的管理了,几个注意的点:
1、双引号,必须有。如果不加双引号,第二个ls命令在本地执行
2、分号,两个命令之间用分号隔开 (或者使用&&进行连接)
示例:
#!/bin/bash args=$1 if [[ $args = "start" ]] ;then cd /home/programs/flume && sh start_project.sh& ssh xxx.xx.x.xx "cd /home/programs/flume && sh start_project.sh&"& ssh xxx.xx.x.xx "cd /home/programs/flume && sh start_project.sh&"& elif [[ $args = "stop" ]] ;then cd /home/programs/flume && sh stop_project.sh& ssh 172.16.1.43 "cd /home/programs/flume && sh stop_project.sh&"& ssh 172.16.1.45 "cd /home/programs/flume && sh stop_project.sh&"& else echo "the args is not right !" fi
参考: