要检查 192.168.1 网段中哪些 IP 地址正在使用,可以使用 Shell 脚本结合 ping 命令来扫描整个网段。以下是实现这一功能的完整脚本:


脚本:检查 192.168.1 网段 IP 是否在用

#!/bin/bash

# 定义网段
NETWORK="192.168.1" # 定义超时时间(秒)
TIMEOUT=1 # 定义并行扫描的 IP 数量
PARALLEL=20 # 日志函数
function log_info() {
echo -e "[INFO] $1"
} function log_success() {
echo -e "\033[32m[SUCCESS] $1\033[0m"
} function log_error() {
echo -e "\033[31m[ERROR] $1\033[0m"
} # 检查单个 IP 是否在线
function check_ip() {
local ip=$1
if ping -c 1 -W "$TIMEOUT" "$ip" &> /dev/null; then
log_success "IP $ip is online"
else
log_error "IP $ip is offline"
fi
} # 主函数
function main() {
log_info "Scanning network $NETWORK.0/24..." # 使用循环遍历 1-254 的 IP 地址
for i in {1..254}; do
ip="$NETWORK.$i"
check_ip "$ip" & # 控制并行数量
if [[ $(jobs -r -p | wc -l) -ge $PARALLEL ]]; then
wait -n
fi
done # 等待所有后台任务完成
wait
} # 执行主函数
main

脚本说明

  1. 网段定义

    • NETWORK="192.168.1":定义要扫描的网段。
  2. 超时时间

    • TIMEOUT=1:设置 ping 命令的超时时间为 1 秒。
  3. 并行扫描

    • PARALLEL=20:设置同时扫描的 IP 数量为 20 个,以提高扫描效率。
  4. 日志输出

    • 使用不同颜色的日志区分在线和离线的 IP 地址:

      • 绿色:IP 在线。
      • 红色:IP 离线。
  5. check_ip 函数

    • 使用 ping 命令检查单个 IP 是否在线。
    • 如果 ping 成功,则 IP 在线;否则,IP 离线。
  6. 主函数 main

    • 遍历 192.168.1.1192.168.1.254 的所有 IP 地址。
    • 使用 &check_ip 放入后台执行,实现并行扫描。
    • 使用 jobswait 控制并行任务数量。

使用方法

  1. 将脚本保存为 scan_network.sh
  2. 赋予执行权限:
    chmod +x scan_network.sh
  3. 运行脚本:
    ./scan_network.sh

示例输出

[INFO] Scanning network 192.168.1.0/24...
[SUCCESS] IP 192.168.1.1 is online
[ERROR] IP 192.168.1.2 is offline
[SUCCESS] IP 192.168.1.3 is online
[ERROR] IP 192.168.1.4 is offline
...

优化建议

  1. 增加 IP 范围参数

    可以通过命令行参数指定扫描的 IP 范围,例如:

    ./scan_network.sh 192.168.1.10 192.168.1.20

    修改脚本:

    START_IP=${1:-1}
    END_IP=${2:-254} for i in $(seq "$START_IP" "$END_IP"); do
    ip="$NETWORK.$i"
    check_ip "$ip" &
    done
  2. 保存结果到文件

    可以将扫描结果保存到文件中,便于后续分析:

    LOG_FILE="scan_results.txt"
    function log_success() {
    echo -e "\033[32m[SUCCESS] $1\033[0m"
    echo "[SUCCESS] $1" >> "$LOG_FILE"
    }
    function log_error() {
    echo -e "\033[31m[ERROR] $1\033[0m"
    echo "[ERROR] $1" >> "$LOG_FILE"
    }
  3. 使用 fping 替代 ping

    fping 是一个更高效的网络扫描工具,支持批量扫描。如果系统安装了 fping,可以替换 ping 命令:

    fping -c 1 -t "$TIMEOUT" "$ip" &> /dev/null

总结

该脚本通过并行 ping 扫描 192.168.1 网段,快速检测哪些 IP 地址在线。通过调整并行数量和超时时间,可以平衡扫描速度和准确性。如果需要更高效的扫描,可以考虑使用 nmapfping 等专业工具。

shell脚本检查192.168.1网段ip是否在用的更多相关文章

  1. 【shell脚本】不停地telnet一个ip或域名,并输出结果到文件中===telnetscript.sh

    编写shell脚本不停地telnet一个域名,并输出结果到文件中 [root@localhost ~]# cat telnetscript.sh #!/bin/bash #检查是否在root用户下执行 ...

  2. shell脚本检查域名证书是否过期

    最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的. (一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下 ...

  3. Shell脚本检查memcache进程并自己主动重新启动

    修正版: #!/bin/sh #check memcache process and restart if down mm_bin="/usr/local/bin/memcached&quo ...

  4. shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端

    openvp 客户端 /home 目录下各脚本文件名 [root@jira home]# ls openvpn_server_restart.sh openvpn_tunnel_monitor.sh ...

  5. shell脚本 检查mysql节点数据一致性

    一.简介 源码地址 日期:2018/4/12 介绍:参考pt checksum思想改写,可以定制化的检查随意两个mysql节点的数据一致性. 功能: 检查随意两个几点的数据一致性 支持并发检查,基于库 ...

  6. Linux Shell脚本之自动修改IP

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  7. shell脚本学习(1)列出一组IP内所有活动主机

    1.用ping命令编写脚本来查询一组IP地址同时检查他们是否处于活动状态 [zhi@centos7 ~]$ vi CheckHostStatus.sh [zhi@centos7 ~]$ ll 总用量 ...

  8. Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  9. 100个Linux Shell脚本经典案例(附PDF)

    转载自:https://mp.weixin.qq.com/s/tCKAM67_7K7q2vJthaIsDQ 原文链接:https://wenku.baidu.com/view/4f089430a116 ...

  10. shell脚本——作业二(循环作业)

    1.通过位置变量创建linux系统账户及密码 $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 #!/bin/bash #创建用户与密码 declare -i c=0 if [ -z $1 ...

随机推荐

  1. JS函数:递归函数与迭代函数

    1.递归函数 : 程序中调用自己的函数 程序调用自身的编程技巧称为 递归( recursion).递归作为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方 ...

  2. Antlr4 语法解析器(下)

    Antlr4 的两种AST遍历方式:Visitor方式 和 Listener方式. Antlr4规则文法: 注释:和Java的注释完全一致,也可参考C的注释,只是增加了JavaDoc类型的注释: 标志 ...

  3. AI游戏外挂:强化学习算法用于棋牌类游戏的最优出牌策略 —— 如何在“斗地主”中使用AI技术获得最高胜率

    相关: https://zh.wikipedia.org/wiki/十三張 去年原打算接的一个小项目,不过后来没有搞下去,这里只记录一下. 这个项目的主要需要完成的一个功能就是图像识别,识别屏幕上的牌 ...

  4. docker login 私有仓库时报错

    连接私有harbor报错如下: docker login 192.168.1.88 -uadmin -pHarbor12345 WARNING! Using --password via the CL ...

  5. IPC-7711/21D, IPC-7711D, IPC-7721D 电子组件的返工、修改和维修,验收标准。Rework, Modification and Repair of Electronic Assemblies

    IPC-7711/21 - Revision D - Standard Only: Rework, Modification and Repair of Electronic Assemblies T ...

  6. 纯HTML5+CSS3实现一棵自己跳舞的树

    代码没有多少,也没有用到任何图片,就实现了一棵可以自己跳舞的树.文件组成就简简单单的一个html和一个css html部分并不是很复杂,就是一些空的div,然后加上html模板也就那么十来行代码 最关 ...

  7. 深入JUnit源码之Runner

    初次用文字的方式记录读源码的过程,不知道怎么写,感觉有点贴代码的嫌疑.不过中间还是加入了一些自己的理解和心得,希望以后能够慢慢的改进,感兴趣的童鞋凑合着看吧,感觉JUnit这个框架还是值得看的,里面有 ...

  8. JDK中的动态代理

    江苏 无锡 缪小东 写到代理模式这章,不得不提到JDK中的动态代理,它是java语言自身对动态代理的支持,类似于JDK中在java.util包中提供Observable类和Observer接口提供对观 ...

  9. Django之gunicorn部署

    安装: pip install gunicorn 启动应用: gunicorn -w 3 -k gthread -e DJANGO_SETTINGS_MODULE=settings.prod Serv ...

  10. Linux 文件删除空间没有释放问题

    最近阿里云频频告警.磁盘使用率飙升90%以上.遂查看磁盘使用情况 df -h 发现使用率却是很高 之后,通过du -h --max-depth=1 / 查看哪个目录下占用的资源较多并进行删除 后来发现 ...