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