查询同网段的mac地址脚本
时间: 2024-09-28 18:03:52 浏览: 31
查询同一网络段内的MAC地址通常需要利用网络命令和脚本来遍历并收集信息。这里提供一个基本的bash shell脚本示例,在Linux环境下可以运行:
```bash
#!/bin/bash
# 获取本地IP地址
local_ip=$(ip route | grep default | awk '{print $5}')
# 定义子网掩码,假设网络段是24位
subnet_mask="255.255.255.0"
# 计算网络前缀
network_prefix=$(echo "255.255.255.0" | awk -F . '{printf "%d", $1*8+$2*4+$3*2+$4}')
# 遍历同一网段的机器并获取MAC地址
echo "Scanning network with IP range $local_ip/$subnet_mask..."
for i in {1..254}; do
target_ip="$local_ip.$i"
mac_address=$(ping -c 1 -W 1 -I $target_ip -s 64 $target_ip | grep -oE '([[:xdigit:]]{1,2}:){5}[[:xdigit:]{1,2}')
if [ "$mac_address" ]; then
echo "IP: $target_ip, MAC Address: $mac_address"
fi
done
相关问题
扫描局域网内多个网段的在线设备 IP 和 MAC 地址和设备名称,显示本机所有网卡的配置信息,并把结果导出到 excel 表内
很抱歉,我是一个语言模型 AI,并没有本地运行环境,无法直接执行系统命令并导出结果到 Excel 表内。但我可以告诉你如何实现这个功能。
你可以通过 Python 编写一个脚本,使用 scapy 库和 openpyxl 库来实现扫描局域网内多个网段的在线设备 IP 和 MAC 地址和设备名称,并将结果导出到 Excel 表内。
具体步骤如下:
1. 安装必要的库
首先需要安装 scapy 和 openpyxl 库。可以使用以下命令进行安装:
```
pip install scapy openpyxl
```
2. 编写脚本
下面是一个简单的示例脚本:
```python
import openpyxl
from scapy.all import ARP, Ether, srp
# 定义要扫描的网段
networks = ['192.168.1.0/24', '192.168.2.0/24']
# 创建 Excel 文件
wb = openpyxl.Workbook()
ws = wb.active
# 添加表头
ws.append(['IP', 'MAC', 'Device Name'])
# 扫描网段
for network in networks:
# 发送 ARP 请求获取在线设备列表
arp = ARP(pdst=network)
ether = Ether(dst='ff:ff:ff:ff:ff:ff')
packet = ether/arp
result = srp(packet, timeout=3, verbose=0)[0]
# 解析响应数据,获取 IP 和 MAC 地址
for sent, received in result:
ip = received.psrc
mac = received.hwsrc
# 获取设备名称
try:
hostname = socket.gethostbyaddr(ip)[0]
except socket.herror:
hostname = ''
# 添加到 Excel 表格中
ws.append([ip, mac, hostname])
# 保存 Excel 文件
wb.save('devices.xlsx')
```
请注意,此脚本仅为示例,可能需要进行适当的修改以适应你的具体需求。
3. 运行脚本
在终端中切换到脚本所在目录,执行以下命令运行脚本:
```
python scan_devices.py
```
脚本将扫描指定的网段,并将结果保存到名为 `devices.xlsx` 的 Excel 文件中。
希望这个示例能够对你有所帮助!
40.写出下列公认的服务所使用的四层协议类型和端口号FTP服务协议端口号DHCP 服务协议DNS 服务协议_端口号端口号Telnet 服务协议端口号 41.Keepalived工作原理是什么 42.编写脚本对192.168.2.0/24 网段主机root进行密码修改(原密码123456),要求每台主机root密码不一样 43.写出输出数字0到100 中3 的倍数(0369..)的命令 44.简述RAIDO RAID1 RAID5三种工作模式的工作原理及特点? 45.如何使用awk 列出UID小于100的用户 46.编写脚本测试192.168.1.0/24 整个网段哪些处于开机状态哪些处于关机状态
40.
- FTP服务协议:应用层协议,使用TCP协议,端口号为21。
- DHCP服务协议:应用层协议,使用UDP协议,端口号为67和68。
- DNS服务协议:应用层协议,使用UDP协议,端口号为53。
- Telnet服务协议:应用层协议,使用TCP协议,端口号为23。
41. Keepalived是一个Linux下的高可用性解决方案,它通过VRRP协议模拟出一个虚拟的IP地址和MAC地址,实现多台服务器之间的负载均衡和故障转移。在Keepalived中,主服务器会不断发送广播消息,备用服务器会接收这些消息,并根据一定的规则决定是否接管主服务器的任务。
42. 编写脚本如下:
```bash
#!/bin/bash
for ip in 192.168.2.{1..254}; do
pass=$(openssl rand -base64 12)
echo "Changing password for root@$ip to $pass"
sshpass -p '123456' ssh root@$ip "echo root:$pass | chpasswd"
done
```
该脚本使用openssl生成随机密码,并使用sshpass实现自动登录并修改密码。每台主机的密码都是随机生成的,满足不同主机密码不一样的要求。
43. 输出命令如下:
```bash
for i in {0..100}; do
if [[ $(($i % 3)) -eq 0 ]]; then
echo $i
fi
done
```
44.
- RAID0工作原理:将数据分成多个块,分别存储在多个硬盘上,提高数据读写速度,但不提供数据冗余。
- RAID1工作原理:将数据复制到多个硬盘上,提供数据冗余,但存储空间利用率较低。
- RAID5工作原理:将数据和校验信息分别存储在多个硬盘上,提供数据冗余和读写速度,但写入速度较慢。
45. 使用awk命令列出UID小于100的用户的命令如下:
```bash
awk -F: '$3<100 {print $1}' /etc/passwd
```
该命令以`/etc/passwd`文件作为输入,使用`:`作为分隔符,以第三列UID作为判断条件,输出第一列用户名。
46. 编写脚本如下:
```bash
#!/bin/bash
for ip in 192.168.1.{1..254}; do
if ping -c1 -W1 $ip &>/dev/null; then
echo "$ip is up"
else
echo "$ip is down"
fi
done
```
该脚本使用ping命令测试每台主机的状态,并输出相应的状态信息。
阅读全文