1.问题描述
经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,下边介绍shell命令远程执行的方法。
前提:
2.脚本方式
有些远程执行的命令内容较多,单一命令无法完成,考虑脚本方式实现:
#!/bin/bashSERVERS="hadoop0 hadoop1 hadoop2"delete_file(){ssh root@$1 > /dev/null 2>&1 << eeooffcd /usr/local# touch abcdefg.txt# rm -rf jdk1.7.0_79rm -rf /test/abcdefg.txtexiteeooffecho done!}for SERVER in $SERVERS do delete_file $SERVER done
远程执行的内容在“<< eeooff ” 至“ eeooff ”之间,在远程机器上的操作就位于其中,注意的点:
1.<< eeooff,ssh后直到遇到eeooff这样的内容结束,eeooff可以随便修改成其他形式。
2.重定向目的在于不显示远程的输出了
3.在结束前,加exit退出远程节点