找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 192|回复: 1

SHELL编程局域网IP探活脚本

[复制链接]

22

主题

21

回帖

134

积分

管理员

积分
134
发表于 2024-8-21 17:00:26 | 显示全部楼层 |阅读模式
  • SHELL脚本支持指定特定的网段;
  • 对特定的网段进行探活;
  • 将存活的IP地址写入存活的列表;
  • 将不存活的IP地址写入不存活的列表;
  1. #!/bin/bash
  2. #by author www.jfedu.net 2024
  3. #######################
  4. INPUT="0"
  5. IP_LIST="$*"
  6. RES_FILE1="/tmp/available.txt"
  7. RES_FILE2="/tmp/unavailable.txt"
  8. #Define check function 2022
  9. check_lan(){
  10.         read -p "Please enter the LAN segment,example 192.168.1.0 (Netmask/24): " INPUT
  11.         if [ `echo $INPUT|sed 's/ /\n/g'|wc -l` -ne 0 ];then
  12.                 for IP in $(seq 1 254)
  13.                 do
  14.                         IP_PREFIX=$(echo $INPUT|awk -F\. '{print $1"."$2"."$3"."}')
  15.                         ping -c 2 -W1 ${IP_PREFIX}$IP >/dev/null 2>1
  16.                         if [ $? -eq 0 ];then
  17.                                 echo "${IP_PREFIX}$IP is up."
  18.                                 echo "${IP_PREFIX}$IP" >> $RES_FILE1
  19.                         else
  20.                                 echo "${IP_PREFIX}$IP is down."
  21.                                 echo "${IP_PREFIX}$IP" >> $RES_FILE2
  22.                         fi
  23.                 done
  24.                 echo -e "\033[32m-------------------------\033[0m"
  25.                 echo -e "\033[32mPlease check the following files:\033[0m"
  26.                 echo "Available IP addresses: $RES_FILE1"
  27.                 echo "Unavailable IP addresses: $RES_FILE2"
  28.                 echo
  29.         fi
  30. }

  31. check_list()
  32. {
  33.         read -p "Please enter the IP list to be checked,example list.txt: " INPUT
  34.         if [ ! -z $INPUT ];then
  35.                 for IP in $(cat $INPUT)
  36.                 do
  37.                         ping -c 2 -W1 $IP >/dev/null 2>1
  38.                         if [ $? -eq 0 ];then
  39.                                 echo "$IP is up."
  40.                                     echo $IP >> $RES_FILE1
  41.                         else
  42.                                 echo "$IP is down."
  43.                                     echo $IP >> $RES_FILE2
  44.                         fi
  45.                 done
  46.                 echo -e "\033[32m-------------------------\033[0m"
  47.                 echo -e "\033[32mPlease check the following files:\033[0m"
  48.                 echo "Available IP addresses: $RES_FILE1"
  49.                 echo "Unavailable IP addresses: $RES_FILE2"
  50.                 echo
  51.         fi
  52. }

  53. check_ip(){
  54. read -p "Please enter the IP to be checked,example 1.1.1.1 | 1.1.1.2: " INPUT
  55. for INPUT in `echo $INPUT`
  56. do
  57.         while true
  58.         do
  59.                 echo $INPUT|grep -E "\<([0-9]{1,3}\.){3}[0-9]{1,3}\>"        
  60.                 if [ $? -eq 0 ];then
  61.                         IP=(`echo $INPUT|sed 's/\./ /g'`)
  62.                         IP1=`echo ${IP[0]}`
  63.                         IP2=`echo ${IP[1]}`
  64.                         IP3=`echo ${IP[2]}`
  65.                         IP4=`echo ${IP[3]}`
  66.                         if [ $IP1 -gt 0 -a $IP1 -le 255 -a $IP2 -ge 0 -a $IP2 -le 255 -a $IP3 -ge 0 -a $IP3 -le 255 -a $IP4 -ge 0 -a $IP4 -lt 255 ];then
  67.                                        if [ `echo $INPUT|sed 's/ /\n/g'|wc -l` -ne 0 ];then
  68.                                                for IP in $(echo $INPUT)
  69.                                                do
  70.                                                        ping -c 2 -W1 $IP >/dev/null 2>1
  71.                                                        if [ $? -eq 0 ];then
  72.                                                                echo "$IP is up."
  73.                                                                echo $IP >> $RES_FILE1
  74.                                                        else
  75.                                                                echo "$IP is down."
  76.                                                                echo $IP >> $RES_FILE2
  77.                                                        fi
  78.                                                done
  79.                                                echo -e "\033[32m-------------------------\033[0m"
  80.                                                echo -e "\033[32mPlease check the following files:\033[0m"
  81.                                                echo "Available IP addresses: $RES_FILE1"
  82.                                                echo "Unavailable IP addresses: $RES_FILE2"
  83.                                                echo
  84.                                        fi
  85.                         break;        
  86.                         else
  87.                                 read -p "Please Enter server IP address:" INPUT
  88.                         fi
  89.                 else
  90.                         read -p "Please Enter server IP address:" INPUT
  91.                 fi
  92.         done
  93. done
  94. }

  95. case $1 in
  96.         1)
  97.         check_lan
  98.         ;;
  99.         2)
  100.         check_ip
  101.         ;;
  102.         3)
  103.         check_list
  104.         ;;
  105.         *)
  106.         echo "---------------------------------------------"
  107.         echo -e "\033[34mWelcome to LAN live scripts:\033[0m"
  108.         echo -e "\033[32m1) check_lan\033[0m"
  109.         echo -e "\033[32m2) check_ip\033[0m"
  110.         echo -e "\033[32m3) check_list\033[0m"
  111.         echo -e "\033[32mUsage:{/bin/sh $0 1|2|3|4|5|help}\033[0m"
  112.         echo "---------------------------------------------"
  113. esac
复制代码


22

主题

21

回帖

134

积分

管理员

积分
134
 楼主| 发表于 2024-8-29 16:00:39 | 显示全部楼层

既然你诚信诚意的推荐了,那我就勉为其难的看看吧!京峰教育Linux论坛不走平凡路。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表