亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過Python正則表達式從arp輸出獲取ip地址和mac地址?

如何通過Python正則表達式從arp輸出獲取ip地址和mac地址?

慕森王 2021-04-02 14:11:45
我想從arpUbuntu上的命令行輸出中獲取mac地址和相應的IP地址(例如,以mac地址作為鍵和ip地址的字典)作為值。$ arpAddress                  HWtype  HWaddress           Flags Mask            IfaceXX.X.X.X(XX)                ether   XX:XX:XX:XX:XX:XX   C                     eth0<host name>                 ether   XX:XX:XX:XX:XX:XX   C                     eth0ip地址(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})的正則表達式和macs的正則表達式(?P<mac>[0-9a-f]{2}[:]){5}([0-9a-f]{2})單獨工作就可以了。我如何才能將兩者結合起來而忽略IP地址和Mac之間的所有內容?如何改善ip地址正則表達式以匹配主機名?如果有更好的替代方法arp來同時獲取IP地址和Mac,我很樂意使用此命令。
查看完整描述

3 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

要加入它們并忽略中間信息,只需在中間添加“。*”,它就可以匹配任何內容,但不會分配給一個組:

(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*([0-9a-f]{2}[:]){5}([0-9a-f]{2})

為了說明主機名,最好在不嘗試確保它是正確的IP或主機名的情況下捕獲第一個字段。只需捕獲第一個字段,直到空格:

^(?P<ip>[^\s]+)

因此,第一個帶有空洞和MAC的字段最終是:

^(?P<ip>[^\s]+).*(?P<mac>(?:[0-9a-f]{2}:){5}[0-9a-f]{2})


查看完整回答
反對 回復 2021-04-27
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

您也可以使用Python Scapy模塊獲取Mac


from scapy.all import *

def get_mac(ip_address):

    responses,unanswered = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip_address),timeout=2,retry=10)

# return the MAC address from a response

    for s,r in responses:

        return r[Ether].src

    return None


print(get_mac("192.168.31.14"))


查看完整回答
反對 回復 2021-04-27
  • 3 回答
  • 0 關注
  • 380 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號