답변:
좀 더 자세한 목록을 원하는 경우에, 나는 적응 이 스크립트 에 ap-hotspot
제공 스크립트 webupd8에서를 :
#!/bin/bash
# show_wifi_clients.sh
# Shows MAC, IP address and any hostname info for all connected wifi devices
# written for openwrt 12.09 Attitude Adjustment
# modified by romano@rgtti.com from http://wiki.openwrt.org/doc/faq/faq.wireless#how.to.get.a.list.of.connected.clients
echo "# All connected wifi devices, with IP address,"
echo "# hostname (if available), and MAC address."
printf "# %-20s %-30s %-20s\n" "IP address" "lease name" "MAC address"
leasefile=/var/lib/misc/dnsmasq.leases
# list all wireless network interfaces
# (for MAC80211 driver; see wiki article for alternative commands)
for interface in `iw dev | grep Interface | cut -f 2 -s -d" "`
do
# for each interface, get mac addresses of connected stations/clients
maclist=`iw dev $interface station dump | grep Station | cut -f 2 -s -d" "`
# for each mac address in that list...
for mac in $maclist
do
# If a DHCP lease has been given out by dnsmasq,
# save it.
ip="UNKN"
host=""
ip=`cat $leasefile | cut -f 2,3,4 -s -d" " | grep $mac | cut -f 2 -s -d" "`
host=`cat $leasefile | cut -f 2,3,4 -s -d" " | grep $mac | cut -f 3 -s -d" "`
# ... show the mac address:
printf " %-20s %-30s %-20s\n" "$ip" "$host" "$mac"
done
done
예를 들어 PATH의 파일에 파일을 복사하여 ~/bin/show_wifi_clients
실행 파일로 chmod +x
만들고 즐기십시오.
printf " %-20s %-30s %-20s\n" $ip $host $mac"
올바르게 인쇄하려면 큰 따옴표로 묶어야합니다. 마찬가지로 답변을 편집 ...
내 휴대폰을 네트워크에 연결하고 멋진 Fing 앱을 사용하여 연결된 클라이언트를 스캔했습니다. :)
https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=es
https://itunes.apple.com/es/app/fing-esc%C3%A1ner-de-red/id430921107?mt=8
이 장치는 또한 장치의 Mac 공급 업체를 가져오고 장치의 Mac에 레이블을 지정할 수도 있습니다.
python3.6 필요
#!/usr/bin/python3.6
import subprocess
import re
import requests
# Store Mac address of all nodes here
saved = {
'xx:xx:xx:xx:xx:xx': 'My laptop',
}
# Set wireless interface using ifconfig
interface = "wlp4s0"
mac_regex = re.compile(r'([a-zA-Z0-9]{2}:){5}[a-zA-Z0-9]{2}')
def parse_arp():
arp_out = subprocess.check_output(f'arp -e -i {interface}', shell=True).decode('utf-8')
if 'no match found' in arp_out:
return None
result = []
for lines in arp_out.strip().split('\n'):
line = lines.split()
if interface in line and '(incomplete)' not in line:
for element in line:
# If its a mac addr
if mac_regex.match(element):
result.append((line[0], element))
return result
def get_mac_vendor(devices):
num = 0
for device in devices:
try:
url = f"http://api.macvendors.com/{device[1]}"
try:
vendor = requests.get(url).text
except Exception as e:
print(e)
vendor = None
except Exception as e:
print("Error occured while getting mac vendor", e)
num += 1
print_device(device, num, vendor)
def print_device(device, num=0, vendor=None):
device_name = saved[device[1]] if device[1] in saved else 'unrecognised !!'
print(f'\n{num})', device_name, '\nVendor:', vendor, '\nMac:', device[1], '\nIP: ',device[0])
if __name__ == '__main__':
print('Retrieving connected devices ..')
devices = parse_arp()
if not devices:
print('No devices found!')
else:
print('Retrieving mac vendors ..')
try:
get_mac_vendor(devices)
except KeyboardInterrupt as e:
num = 0
for device in devices:
num += 1
print_device(device, num)
arp -an
IP 주소를 확인하려고 긴 지연을 방지하기 위해 --- 유용합니다.