问题描述
我在局域网中有3个Ubuntu,2个Kubuntu,2个Windows XP和2个Windows 7.有哪些命令或工具可用于查看哪些PC连接到LAN,它显示了PC的名称和IP。类似于愤怒IP等工具,可以显示局域网中的所有PC。
请注意,我不知道连接到LAN的计算机的IP或名称。所以工具或命令应该寻找它们。
最佳解决思路
取自Finding All Hosts On the LAN From Linux/Windows Workstation
for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null;
[ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ;
done
但对于一个伟大的工具,Nmap。非常适合绘制网络。
次佳解决思路
Arp-scan也适合我…
如果使用Wi-Fi:
sudo arp-scan -l --interface=wlan0
– 或者如果使用以太网:
sudo arp-scan -l --interface=eth0
(这最后几乎与Rajesh Rajendran发布的相同; -l代表–localnet)
如果您没有arp-scan(默认情况下它没有附带Ubuntu),只需拉起一个终端并输入:
sudo apt-get install arp-scan
第三种解决思路
最简单的事情是
arp-scan --localnet
第四种思路
我总是使用nmap。要扫描网络中的所有设备,请使用:
nmap -sP 192.168.0.1/24
更多这里:http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/
这是一个了解的好工具。您可能希望使用以下命令安装nmap
:
sudo apt-get install nmap
如果您使用的是Debian或
如果您使用Arch,则为sudo yaourt -S nmap
。
第五种思路
作为一个可能的GUI选项,我见过的最好的是http://angryip.org/download/#linux中的Angry IP
只需下载最新的DEB包并安装即可。然后从Dash运行ipscan。这是一个截图:
第六种思路
arp
Address HWtype HWaddress Flags Mask Iface
iPhone-von-me.fritz.box ether 12:55:05:30:3c:df C wlp3s0
android-abcdefghijklmno ether 11:66:3f:71:04:d6 C wlp3s0
fritz.box ether 00:11:3f:46:37:c2 C wlp3s0
Blupiblu.fritz.box ether 71:88:cc:bb:dc:a6 C wlp3s0
ip neigh
ip neigh
和hosts
。不需要nmap /sudo。
在此基础上,您可以构建Python脚本:
#!/usr/bin/env python
"""List all hosts with their IP adress of the current network."""
import os
out = os.popen('ip neigh').read().splitlines()
for i, line in enumerate(out, start=1):
ip = line.split(' ')[0]
h = os.popen('host {}'.format(ip)).read()
hostname = h.split(' ')[-1]
print("{:>3}: {} ({})".format(i, hostname.strip(), ip))
通过下载
wget https://gist.githubusercontent.com/MartinThoma/699ae445b8a08b5afd16f7d6f5e5d0f8/raw/577fc32b57a7f9e66fdc9be60e7e498bbec7951a/neighbors.py
第七种思路
如果您的路由器未禁用广播…
你可以ping广播地址。
ping -b 192.168.0
将ping命令广播到192.168.0 /24子网内的每个主机。
注意:尽管黑客可以利用DDOS Smurf攻击利用网络,但关闭广播可能是一个好主意。基本上,使用具有欺骗目标地址(即受害者的IP地址)的数据包ping广播地址。除此之外还有一点点,但这就是谷歌的用途。
注意:同样适用于Windows,但您可以ping实际广播地址(不是子网)。
ping -b 192.168.0.255