由于公司的设备很多,而且每台SQUID的日志都要定时上传到本网段内部的FTP服务器.而有些时候会因为UPLOAD上传配置文件错误或远程FTP主机服务DOWN,而导致SQUID日志大量堆积.现在通过CURL进行FTP状态的测试,SHELL进行IP地址的替换.解决问题.与大家分享如下代码.请多提宝贵意见与建议。本人还是比较菜,代码部分过于烦琐.请见谅 #!/bin/bash dMRLinux联盟 UPLOAD_CONF=/usr/local/squid/etc/upload.conf ##########AUTO_create FTP host IP##################################dMRLinux联盟 OPT=0dMRLinux联盟 rm -f ./ftp.host #####根据客户机的IP地址来创建本网段可用的FTP主机地址############################# if [ -f /etc/sysconfig/network-scripts/ifcfg-eth0 ];thendMRLinux联盟 IP=`cat /etc/sysconfig/network-scripts/ifcfg-eth0|awk -F = '/IPADDR/{print $2}'`dMRLinux联盟 echo $IP|grep -i -E "^192" > /dev/nulldMRLinux联盟 if [ $? == 0 ];thendMRLinux联盟 for ip in 111 112 113 114dMRLinux联盟 dodMRLinux联盟 echo "${IP%.*}.$ip" >> ./ftp.hostdMRLinux联盟 donedMRLinux联盟 elsedMRLinux联盟 OPT=1dMRLinux联盟 fidMRLinux联盟 fi if [ $OPT == 1 ];then IP=`cat /etc/sysconfig/network-scripts/ifcfg-eth1|awk -F = '/IPADDR/{print $2}'`dMRLinux联盟 echo $IP|grep -i -E "^172" > /dev/nulldMRLinux联盟 if [ $? == 0 ];thendMRLinux联盟 for ip in 111 112 113 114dMRLinux联盟 dodMRLinux联盟 echo "${IP%.*}.$ip" >> ./ftp.hostdMRLinux联盟 donedMRLinux联盟 elsedMRLinux联盟 exit 1dMRLinux联盟 fidMRLinux联盟 fidMRLinux联盟 ################################################dMRLinux联盟 ##############取FTP上传信息################################################ IP=`cat $UPLOAD_CONF|awk -F = '/LDCIP/ {print $2}'`dMRLinux联盟 USER=`cat $UPLOAD_CONF|awk -F = '/USER/ {print $2}'`dMRLinux联盟 PASSWD=`cat $UPLOAD_CONF|awk -F = '/PASSWD/ {print $2}'`dMRLinux联盟 #######冗余判断##################################### IP=${IP:-"`head -n1 ./ftp.host`"}dMRLinux联盟 USER=${USER:-"fromcf"}dMRLinux联盟 PASSWD=${PASSWD:-"fromcf102090"} ##########################测试主程序############################################### /usr/bin/curl -u $USER:$PASSWD ftp://$IP -o /dev/null -s if test $? != 0;then while read IP2 dMRLinux联盟 do dMRLinux联盟 /usr/bin/curl -u $USER:$PASSWD ftp://$IP2 -o /dev/null -s if [ $? == 0 ];thendMRLinux联盟 sed "s/$IP/$IP2/g" ./upload.conf > ./upload.conf.tmp&&cp -f ./upload.conf.tmp ./upload.conf&&rm -f ./upload.conf.tmpdMRLinux联盟 ERR=0dMRLinux联盟 breakdMRLinux联盟 elsedMRLinux联盟 ERR=1dMRLinux联盟 fi done < ./ftp.host if [ $ERR != 0 ];thendMRLinux联盟 echo "Please check you HOST-network or REMOTE-HOST-FTP"dMRLinux联盟 exit 1dMRLinux联盟 fidMRLinux联盟 fi ------------------------本文完-----------------------------------------------------
|