shell脚本检查192.168.1网段ip是否在用
要检查 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
脚本说明
网段定义
NETWORK="192.168.1":定义要扫描的网段。
超时时间
TIMEOUT=1:设置ping命令的超时时间为 1 秒。
并行扫描
PARALLEL=20:设置同时扫描的 IP 数量为 20 个,以提高扫描效率。
日志输出
- 使用不同颜色的日志区分在线和离线的 IP 地址:
- 绿色:IP 在线。
- 红色:IP 离线。
- 使用不同颜色的日志区分在线和离线的 IP 地址:
check_ip函数- 使用
ping命令检查单个 IP 是否在线。 - 如果
ping成功,则 IP 在线;否则,IP 离线。
- 使用
主函数
main- 遍历
192.168.1.1到192.168.1.254的所有 IP 地址。 - 使用
&将check_ip放入后台执行,实现并行扫描。 - 使用
jobs和wait控制并行任务数量。
- 遍历
使用方法
- 将脚本保存为
scan_network.sh。 - 赋予执行权限:
chmod +x scan_network.sh
- 运行脚本:
./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
...
优化建议
增加 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
保存结果到文件
可以将扫描结果保存到文件中,便于后续分析: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"
}
使用
fping替代ping
fping是一个更高效的网络扫描工具,支持批量扫描。如果系统安装了fping,可以替换ping命令:fping -c 1 -t "$TIMEOUT" "$ip" &> /dev/null
总结
该脚本通过并行 ping 扫描 192.168.1 网段,快速检测哪些 IP 地址在线。通过调整并行数量和超时时间,可以平衡扫描速度和准确性。如果需要更高效的扫描,可以考虑使用 nmap 或 fping 等专业工具。
shell脚本检查192.168.1网段ip是否在用的更多相关文章
- 【shell脚本】不停地telnet一个ip或域名,并输出结果到文件中===telnetscript.sh
编写shell脚本不停地telnet一个域名,并输出结果到文件中 [root@localhost ~]# cat telnetscript.sh #!/bin/bash #检查是否在root用户下执行 ...
- shell脚本检查域名证书是否过期
最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的. (一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下 ...
- Shell脚本检查memcache进程并自己主动重新启动
修正版: #!/bin/sh #check memcache process and restart if down mm_bin="/usr/local/bin/memcached&quo ...
- shell脚本检查是否存在tun0虚拟网卡,若不不存在服务器更改port,并重启服务器,客户端修改port,并重新启动客户端
openvp 客户端 /home 目录下各脚本文件名 [root@jira home]# ls openvpn_server_restart.sh openvpn_tunnel_monitor.sh ...
- shell脚本 检查mysql节点数据一致性
一.简介 源码地址 日期:2018/4/12 介绍:参考pt checksum思想改写,可以定制化的检查随意两个mysql节点的数据一致性. 功能: 检查随意两个几点的数据一致性 支持并发检查,基于库 ...
- Linux Shell脚本之自动修改IP
作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...
- shell脚本学习(1)列出一组IP内所有活动主机
1.用ping命令编写脚本来查询一组IP地址同时检查他们是否处于活动状态 [zhi@centos7 ~]$ vi CheckHostStatus.sh [zhi@centos7 ~]$ ll 总用量 ...
- Shell脚本实现自动修改IP地址
作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...
- 100个Linux Shell脚本经典案例(附PDF)
转载自:https://mp.weixin.qq.com/s/tCKAM67_7K7q2vJthaIsDQ 原文链接:https://wenku.baidu.com/view/4f089430a116 ...
- shell脚本——作业二(循环作业)
1.通过位置变量创建linux系统账户及密码 $1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 #!/bin/bash #创建用户与密码 declare -i c=0 if [ -z $1 ...
随机推荐
- C#使用Socket实现分布式事件总线,不依赖第三方MQ
使用 Socket 实现的分布式事件总线,支持 CQRS,不依赖第三方 MQ. CodeWF.EventBus.Socket 是一个轻量级的.基于 Socket 的分布式事件总线系统,旨在简化分布式架 ...
- 部署包含Oracle数据源的项目
这段时间在处理公司EAS的数据报表,需要通过ETL进行数据的抽取,当ETL都完成并在本地跑成功后,总以为万事大吉了,没想到部署到作业后,却一直无法成功,百度搜索了好多方法,跟着上面去操作还是一直报错, ...
- Avalonia开源控件库强力推荐-Semi.Avalonia
Avalonia是什么? Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序.它使用自己的渲染引擎绘制UI控件,确保在Windows.macOS.Linux.Android ...
- 利用 canvas 实现签名效果
利用 canvas 实现签名效果 使用插件 jSignature github:https://github.com/brinley/jSignature 如果再H5 中使用需要加载 flash ...
- 量子线路设计:减少CNOT和T门的意义。
在量子线路的设计中,我们往往希望减少线路中的CNOT门和T门的数目,原因如下: 一般文献宣称减少T门的数量是为了更高效地执行容错量子计算(fault-tolerant quantum computat ...
- CommonsCollections4(基于ysoserial)
环境准备 JDK1.8(8u421)这里ysoserial没有提及JDK版本的影响,我以本地的JDK8版本为准.commons-collections4(4.0 以ysoserial给的版本为准).j ...
- php的各种序列化对比
php的各个序列化反序列化对比如下 function 10万条记录的序列化并写入(ms) 10万条记录文件读取并反序列化(ms) 100条记录序列化并写入(ms) 100条记录文件读取并反序列化(ms ...
- DSPf28335 --工程模版相关文件
创建工程需要的两个文件 DSP2833x_common 1.cmd 下图中的两个文件(由TI公司提供的) 1.28335_RAM_lnk.cmd :程序下载到RAM中进行调试和仿真所使用的启动文件. ...
- 五、FreeRTOS学习笔记-任务创建和删除(动态方式)
1任务控制块:保存任务的一些信息 (STM32的栈是由告高地址向低地址延伸的,由上向下生长) (STM32的堆是由告低地址向高地址延伸的,由下向上生长) 第一步申请内存 如下如所示步骤找到xTaskC ...
- Python框架之FastAPI
原起: 最近项目中现存的是使用的python的异步方式进行开发, 但是只是存在脚本部分, 并没有提供对外的Web服务,正好趁机将Fastapi嵌入其中使用. 官方文档: https://fastapi ...