通过screen实现近乎并发的shell远程调用 思考和部分实现

10.1.6.1 disk1.mos.com disk1

10.1.6.2 disk2.mos.com disk2

10.1.6.3 disk3.mos.com disk3

#!/bin/bashCMD=${1:-/usr/bin/yum makecache}CMD_SN=”disk_ver.1″DATE=”/bin/date +%k:%M:%S/%Y-%m-%d”SSH=”/usr/bin/ssh -q -o StrictHostKeyChecking=no”SCREEN=/usr/bin/screenLIST=(`cat /etc/hosts|grep mos.com|awk ‘{print $1}’`)for i in ${LIST[@]};do$SSH $i $SCREEN -dmS $CMD_SN$SSH $i $SCREEN -S $CMD_SN -X screen $CMDecho -en “`$DATE` $i done.\n\n”done

在三个节点分别放置一个简单的脚本,网站空间,用来查看命令是否被成功执行,代码如下:

#!/bin/bashDate=”/bin/date +%k:%M:%S/%Y-%m-%d”Mlog=/var/log/mon.logTEE(){/usr/bin/tee -a $Mlog}while :;doINFO=`ps aux|grep -v grep|grep yum`if [ -n “$INFO” ];thenecho -en “`$Date` : $INFO \n\n” |TEEfisleep 1done

在控制节点执行脚本,结果如下:

在三个节点看到任务启动时间如下:

写文不易,香港虚拟主机,列位看官若觉得还能凑合,给好评哦,亲..

刚弄完这个,忽然想到这个东西放后台应该也是可以的,经测试的确可以,因此,代码可改为:

#!/bin/bashCMD=${1:-/usr/bin/yum makecache}DATE=”/bin/date +%k:%M:%S/%Y-%m-%d”LOG=/var/log/ctrl.logSSH=”/usr/bin/ssh -q -o StrictHostKeyChecking=no”LIST=(`cat /etc/hosts|grep mos.com|awk ‘{print $1}’`)for i in ${LIST[@]};do$SSH $i $CMD &>> $LOG &echo -en “`$DATE` $i done.\n\n”done

记录所有输出至日志文件,通过日志可判断执行结果对错。这样一来,上述几条中的第4、7都可完成,第5条的问题也不存在,免备案空间,仅剩第6和9两条的需再做思考

本文出自 “自强不息” 博客,请务必保留此出处

己欲立先立人,已欲达先达人。

通过screen实现近乎并发的shell远程调用 思考和部分实现

相关文章:

你感兴趣的文章:

标签云: