import subprocess
import re
import socket
from scapy.all import sr1, IP, ICMP
def get_mac_address(ip):
    try:
        # 执行arp命令来查找IP对应的MAC地址
        result = subprocess.run(['arp', '-a'], capture_output=True, text=True, check=True)
        output = result.stdout
        # 解析输出,注意Windows上的输出格式可能与Linux不同
        match = re.search(rf'{ip}\s+([0-9a-fA-F-]+)', output)
        if match:
            return match.group(1)
        else:
            return None
    except subprocess.CalledProcessError as e:
        print(f"Error: {e}")
        return None
 
def ping(host):
    # 创建一个ICMP请求数据包
    packet = IP(dst=host)/ICMP()
    # 发送数据包并接收响应
    reply = sr1(packet, timeout=1, verbose=False)
    # 检查是否收到回复
    if reply is not None and reply.haslayer(ICMP):
        return True
    else:
        return False

ip_address = "192.168.0.254"
mac_address = get_mac_address(ip_address)
print(f"MAC Address: {mac_address}")
print(f"IP: {ip_address}")
if ping(ip_address):
    print(f"{ip_address} is active.")
else:
    print(f"{ip_address} is die.")

标签: python