我会准确地解释它!
我们互相拥有mac地址。如果要检查我的朋友是否在线,我执行以下命令:
sudo ifconfig en0 ether xx:xx:xx:xx:xx:xx; sudo ifconfig en0 down; sudo ifconfig en0 ether up; sleep 6; ping -c 3 www.google.co.in;
其中xx:xx:xx:xx:xx:xx = MAC ADDRESS,en0 = ethernet
我使用睡眠,因为连接路由器需要大约6秒
因此ping显示结果是否在线
现在我在txt文件中有8个这样的mac地址,每个文件组成一行。
Q1)我可以只使用一个命令,它从文本文件中逐个获取每个mac地址并在上面的命令中使用它,并在我的txt结束时结束吗?
Q2)是否有任何备用命令用于上述目的,因为我自己组织上述命令以按照我的用途正常工作?
我使用Mac OS
答案 0 :(得分:0)
您可以使用 arpwatch 来跟踪以太网/ IP地址配对。 你这样运行:
arpwatch -i eth0
如果你想查看日志:
tail -f /var/log/syslog
输出:
11月15日15:59:34 debian arpwatch:新站192.168.1.2 0:17:9a:a:f6:44 eth0
然后你可以更容易地做一个bash脚本。
一些例子...... 找到MAC的最后一个日志
tail -f /var/log/syslog | egrep -i xx:xx:xx:xx:xx:xx
提取该日志的时间
tail -f /var/log/syslog | egrep -i xx:xx:xx:xx:xx:xx | awk '{print $3}'
或更有用的东西,比如ip
tail -f /var/log/syslog | egrep -i xx:xx:xx:xx:xx:xx | awk '{print $8}'
答案 1 :(得分:0)
我想你想要这样的东西:
#!/bin/bash
while read m; do
echo Checking MAC address: $m
sudo ifconfig en0 ether $m
sudo ifconfig en0 down
sudo ifconfig en0 ether up
sleep 6
ping -c 3 www.google.co.in
if [ $? -eq 0 ]; then
echo Ping successful
else
echo Ping failed
fi
done < MACs.txt
MACs.txt
看起来像这样:
11.22.33.44.55.66
22.33.44.55.66.77
33.44.55.66.77.88
更新了答案
如果你想要它更加简化,你可能更喜欢这个并不总是等待6秒的版本 - 而是它ping了10次,ping之间有1秒,如果ping成功则立即停止,所以应该更快。
#!/bin/bash
while read m; do
echo Checking MAC address: $m
sudo ifconfig en0 ether $m
sudo ifconfig en0 down
sudo ifconfig en0 ether up
# Ping up to 10 times, stopping immediately if successful
success=0
for i in {1..10}; do
ping -c 3 -t 1 www.google.co.in > /dev/null
if [ $? -eq 0 ]; then
success=1
break
fi
done
if [ $success -eq 1 ]; then
echo Success: $m
else
echo Fail: $m
fi
done < MACs.txt
答案 2 :(得分:0)
这是最终报价
#!/bin/bash
while read m; do
echo Checking MAC address: $m
sudo ifconfig en0 ether $m
sudo ifconfig en0 down
sudo ifconfig en0 up
sleep 5
i=1
while [ $i -eq 1 ]
do
ping -c 3 www.google.co.in > /dev/null
e=$?
if [ $e -eq 0 ]
then
echo ONLINE
i=0
echo $m >> ONLINE.txt
elif [ $e -eq 2 ]
then
echo OFFLINE
i=0
echo $m >> OFFLINE.txt
else
echo Waiting To be Connected
i=1
sleep 4
fi
done
done < macs.txt
echo HI, These macs are ONLINE
cat ONLINE.txt
echo Sorry these are OFFLINE
cat OFFLINE.txt
rm ONLINE.txt OFFLINE.txt
感谢您的帮助!