Linux下脚本编写局域网扫描工具

简介: Linux下脚本编写局域网扫描工具

1、要求

获得整个局域网里哪些ip地址在使用,哪些没在用,同时显示在使用的ip地址对应的mac地址。写到文件里:

up.txt 保存正在使用的ip以及对应的mac地址。

down.txt:保存没有正在使用的ip地址。

2、需求分析:

①ping命令

②arp缓存表:记录ip对应的mac地址。

③网段:192.168.2.0/24 2.1~2.254

④for循环。

⑤扩展知识点:

arp -n:查看arp缓存表

arp:地址解析协议:address resolution protocol ,是将ip解析成对应的mac地址。

[root@nginx-kafka01 network-scripts]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.2.1              ether   a4:1a:3a:38:8d:29   C                     ens33
192.168.2.123            ether   04:d3:b0:f6:91:7c   C                     ens33

ping 是测试网络是否畅通的工具

ping 192.168.2.1 -c 4:表示只能发送4个数据包。

-c 发包的次数 count

[-w deadline] 多少时间内必须完成 期限

[-W timeout] 超过多少时间就停止 超时

[-i interval] 包和包之间的时间间隔 间隔

3、代码实现

#基础版的

[root@nginx-kafka01 shell]# cat scan_lan.sh
#!/bin/bash
#清空文件
>up.txt
>down.txt
#循环ping整个局域网里的ip地址
for i in {1..10}
do
 #使用ping命令去测试这个ip地址是否使用,使用多个子进程去执行ping命令,提升并发的效果
#如果能ping通,说明$?返回值为0,写到up.txt 如果不通,就写到down.txt文件里
  if ping -c 1  -W 1  192.168.2.$i  &>/dev/null ;then
    echo "192.168.2.$i is up"
    echo "192.168.2.$i" >>up.txt
  else
    echo "192.168.2.$i is down"
    echo "192.168.2.$i" >>down.txt
  fi
done

测试:

[root@nginx-kafka01 shell]# bash scan_lan_bak.sh 
192.168.2.1 is up
192.168.2.2 is down
192.168.2.3 is down
192.168.2.4 is down
192.168.2.5 is down
......
[root@nginx-kafka01 shell]# cat up.txt
192.168.2.1
[root@nginx-kafka01 shell]# cat down.txt
192.168.2.2
192.168.2.3
192.168.2.4
192.168.2.5
192.168.2.6
.......

脚本优化:

1、速度提升,时间减少

2、资源消耗

串行:顺序执行

并行;同时进行

多进程和多线程

并发:在一段时间内一起执行,例如:1分钟内。

[root@nginx-kafka01 shell]# echo $$  #父进程
8228
[root@nginx-kafka01 shell]# bash scan_lan.sh  #子进程
9516

子进程和父进程和孙子进程的原理:多进程和多线程

扩展知识点:

arping命令可以同时得到ip和对应的mac地址

也可以用来判断某个ip地址是否和其他冲突。

[root@nginx-kafka01 shell]# arping -I ens33 192.168.2.1 -c 1
ARPING 192.168.2.1 from 192.168.2.152 ens33
Unicast reply from 192.168.2.1 [A4:1A:3A:38:8D:29]  7.604ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)
[root@nginx-kafka01 shell]# arping -I ens33 192.168.2.1 -c 1|egrep Unicast
Unicast reply from 192.168.2.1 [A4:1A:3A:38:8D:29]  6.659ms
[root@nginx-kafka01 shell]# arp -n|grep ether
192.168.2.115            ether   e8:d0:fc:dd:03:19   C                     ens33
192.168.2.108            ether   98:2c:bc:cb:1f:ba   C                     ens33
192.168.2.230            ether   00:0c:29:ea:ac:65   C                     ens33
......
[root@nginx-kafka01 shell]# time bash scan_lan.sh
9700
192.168.0.1 is used
192.168.0.6 is unused
192.168.0.7 is unused
..........
real  0m1.039s
user  0m0.015s
sys 0m0.031s

优化之后的脚本文件:

[root@nginx-kafka01 shell]# cat scan_lan_bak_bak.sh 
#!/bin/bash
#清空文件
>up.txt
>down.txt
#查看当前子bash的pid号
echo $$
num=$(echo $$)
#查看过滤出当前子bash的父进程号
pstree -p |egrep $num
#循环ping整个局域网里的ip地址
for i in {1..254}
do
    #启动多进程去ping,提升效率,启动子进程放到后台去执行
    (if ping -c 1  -W 1  192.168.2.$i  &>/dev/null ;then
        echo "192.168.2.$i is up"
    else
        echo "192.168.2.$i is down"
        echo "192.168.2.$i" >>down.txt
    
    fi)&
done
#等待子进程结束,然后再退出
wait
#将arp缓存表里的记录保存到up.txt
arp -n|awk '/ether/{print $1,$3}' >up.txt

里面加上()&:表示将()里面的内容放在后台去执行。

相关文章
|
12天前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
172 3
|
11天前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
186 9
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
112 0
Linux系统初始化脚本
|
11天前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
67 3
|
11天前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
83 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
28天前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
104 16
|
3月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
92 1
Linux系统性能调优技巧和相关工具
|
3月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
334 16
|
3月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
226 1
|
2月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。