Shell脚本实现线上服务器之间对比文件是否一致
工作中有时需要对比文件是否一致,通过以下脚本可以实现(比较简单):分享出来,希望能帮助到有同样需求的朋友~
#!/bin/bash #对比服务器上文件是否一样 #Richardshen2012/07/08 LC_ALL='en_US.UTF-8' basedir=`dirname$0` HOST=$basedir/host.txt PASSWD="abcd" #密码 FILE=$basedir/file.txt LOG=$basedir/tmp.log >$LOG [!-f/usr/bin/nc]&&yum-yinstallnc [!-f/usr/bin/expect]&&yum-yinstallexpect auto_smart_ssh(){ expect-c"settimeout-1; spawnssh-oStrictHostKeyChecking=no$2${@:3}; expect{ *assword:*{send--$1\r; expect{ *denied*{exit2;} eof } } eof {exit1;} } " # return$? } num=0 forfilein`cat$FILE`;do forhostin`cat$HOST`;do [[$host=~"^#"]]&&continue let'num++' if!/usr/bin/nc-w1$host22>/dev/null;then echo"sshconnectfailed."|tee-a$LOG continue else echo-e"\e[32m$host($FILE)MD5comparedfiles...\e[0m" auto_smart_ssh$PASSWDroot@$hostmd5sum$file|grep$file|grep-vStrictHostKeyChecking|tee-a$LOG fi done echo"----------------------------------------------------------" done
对比的IP地址写入host.txt,需要对比的文件(支持多个文件)写入file.txt
输出结果为:
192.168.113.108(./file.txt)MD5comparedfiles... c84509bb3b109506935dba56b667a136 /data/server/www/apps/ad/fullcollumn.html 192.168.113.111(./file.txt)MD5comparedfiles... c84509bb3b109506935dba56b667a136 /data/server/www/apps/ad/fullcollumn.html ---------------------------------------------------------- 192.168.113.108(./file.txt)MD5comparedfiles... d2c965f5222ff47432313c76863f428d /data/server/www/apps/ad/sky.html 192.168.113.111(./file.txt)MD5comparedfiles... d2c965f5222ff47432313c76863f428d /data/server/www/apps/ad/sky.html