76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""
|
||
|
|
Scan the local network to see what devices are active
|
||
|
|
"""
|
||
|
|
|
||
|
|
import subprocess
|
||
|
|
import sys
|
||
|
|
import ipaddress
|
||
|
|
|
||
|
|
def scan_network():
|
||
|
|
"""Scan the 192.168.1.x network"""
|
||
|
|
print("Scanning 192.168.1.0/24 network...")
|
||
|
|
|
||
|
|
# Use nmap if available, otherwise use ping
|
||
|
|
try:
|
||
|
|
result = subprocess.run(['nmap', '-sn', '192.168.1.0/24'],
|
||
|
|
capture_output=True, text=True, timeout=30)
|
||
|
|
if result.returncode == 0:
|
||
|
|
print("Active hosts (nmap):")
|
||
|
|
print(result.stdout)
|
||
|
|
else:
|
||
|
|
print("nmap failed, trying ping scan...")
|
||
|
|
ping_scan()
|
||
|
|
except FileNotFoundError:
|
||
|
|
print("nmap not found, using ping scan...")
|
||
|
|
ping_scan()
|
||
|
|
|
||
|
|
def ping_scan():
|
||
|
|
"""Ping scan 192.168.1.1-254"""
|
||
|
|
active_hosts = []
|
||
|
|
|
||
|
|
for i in range(1, 255):
|
||
|
|
ip = f"192.168.1.{i}"
|
||
|
|
try:
|
||
|
|
result = subprocess.run(['ping', '-c', '1', '-W', '1000', ip],
|
||
|
|
capture_output=True, timeout=2)
|
||
|
|
if result.returncode == 0:
|
||
|
|
active_hosts.append(ip)
|
||
|
|
print(f"✓ {ip} is active")
|
||
|
|
except subprocess.TimeoutExpired:
|
||
|
|
pass
|
||
|
|
except Exception:
|
||
|
|
pass
|
||
|
|
|
||
|
|
print(f"\nFound {len(active_hosts)} active hosts:")
|
||
|
|
for host in active_hosts:
|
||
|
|
print(f" {host}")
|
||
|
|
|
||
|
|
def check_arp():
|
||
|
|
"""Check ARP table for RP2040-ETH"""
|
||
|
|
print("\nChecking ARP table for RP2040-ETH...")
|
||
|
|
try:
|
||
|
|
result = subprocess.run(['arp', '-a'], capture_output=True, text=True)
|
||
|
|
lines = result.stdout.split('\n')
|
||
|
|
rp2040_found = False
|
||
|
|
|
||
|
|
for line in lines:
|
||
|
|
if '192.168.1.20' in line or '192.168.1.201' in line:
|
||
|
|
print(f"Found: {line}")
|
||
|
|
rp2040_found = True
|
||
|
|
|
||
|
|
if not rp2040_found:
|
||
|
|
print("RP2040-ETH not found in ARP table")
|
||
|
|
|
||
|
|
except Exception as e:
|
||
|
|
print(f"ARP check failed: {e}")
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
scan_network()
|
||
|
|
check_arp()
|
||
|
|
|
||
|
|
print("\nNext steps:")
|
||
|
|
print("1. Check if 192.168.1.201 appears in the scan")
|
||
|
|
print("2. Try: ping 192.168.1.201")
|
||
|
|
print("3. Monitor serial output from RP2040-ETH for debug info")
|
||
|
|
print("4. Check ethernet cable connection")
|