shell利用mysql表项的icmp检测

作者:邓聪聪

  利用mysql的表项记录IP地址和对应状态

+----+-----------------+--------+--------+
| id | ip_host         | desc   | status |
+----+-----------------+--------+--------+
|  1 | 8.8.8.8         | 电信   |      0 |
| 23 | 114.114.114.114 | 联通   |      0 |
| 29 | 114.114.114.117 | 测试   |      1 |
| 21 | 2.2.2.2         | 电信   |      1 |
| 15 | 222.222.222.1   | 电信   |      0 |
| 24 | 223.3.2.2       | 谷歌   |      1 |
| 26 | 23.24.24.32     | 测完   |      1 |
| 25 | 232.23.22.32    | 测试   |      1 |
+----+-----------------+--------+--------+

shell脚本内容:

#!/bin/sh
PATH=$PATH

DB_table="iphost"
DB_status="status"
DB_vlues="ip_host" 
ping_ip(){ sql_host_status
=`mysql -uusername -ppassword test -e "select status from $DB_table where ip_host='$1'"|grep -v $DB_status` ping -c 4 -W 1 $1 > /dev/null 2>&1 if [ $? -ne $sql_host_status ] then des=`mysql -uusername -ppassword test -e "select * from iphost where $DB_vlues like '$1'"|awk '{print $3}'|grep -v desc` if [ $sql_host_status == 0 ] then #$sql_host_status="1" echo "$1 is bad" #更新状态为1 mysql -uusername -ppassword test -e "update $DB_table set $DB_status='1' where ($DB_vlues='$1')" else #$sql_host_status="0" echo "$1 is ok" #更新状态为0 mysql -uusername -ppassword test -e "update $DB_table set $DB_status='0' where ($DB_vlues='$1')" fi else continue fi } while true do echo "" while true do for i in `mysql -uusername -ppassword test -e "select ip_host from iphost" |awk '{print $1}'|grep -v ip_host` do ping_ip $i done done sleep 1 break done

  

原文地址:https://www.cnblogs.com/dengcongcong/p/10611391.html