שלום, במסגרת עבודה על פרוייקט אני צריך לראות את התקשורת במחשב. אשמח להמלצות על ספריות בפייתון שנותנות מידע כמו שרואים בnetstat בcmd. מצאתי את הספרייה pynetstat אבל לא הצלחתי להשיג שם את המידע בצורה שנוח לעבד אותו בתוכנה. אשמח לעזרה.
הי,
אם netstat עוזר הייתי מפעיל אותו ומנתח את הפלט באמצעות ביטוי רגולארי. למשל אצלי על המק הפקודה netstat -nat | grep LISTEN
מציגה את כל הפורטים שעכשיו מאזינים בפורמט שנראה כך:
tcp4 0 0 127.0.0.1.3000 *.* LISTEN
tcp6 0 0 fe80::1%lo0.3000 *.* LISTEN
tcp6 0 0 ::1.3000 *.* LISTEN
tcp46 0 0 *.55091 *.* LISTEN
אז בשביל להפוך את זה למשהו ידידותי לפייתון נשתמש בביטוי רגולארי כמו בתוכנית הבאה:
import subprocess
import re
pattern = """
(?P<protocol>tcp4|tcp6)
\s+
(?P<recvq>\d+)
\s+
(?P<sendq>\d+)
\s+
(?P<local_address>\d+\.\d+\.\d+\.\d+|\*)
\.
(?P<local_port>\d+)
\s+
\*\.\*\s+
LISTEN
"""
LISTEN_RE = re.compile(pattern, re.VERBOSE)
proc = subprocess.Popen(
'netstat -nat | grep LISTEN',
shell=True,
stdout=subprocess.PIPE,
universal_newlines=True)
for line in proc.stdout:
m = LISTEN_RE.match(line)
if m is not None:
local_address = m.group('local_address')
local_port = m.group('local_port')
print("Listening on: {}:{}".format(local_address, local_port))
ובנושא ספריות רשת שיכולות לעזור יש את:
pcap שזו ספריה מעולה להאזין למידע שעובר ברשת דרך המחשב שלך:
וכמובן twisted שזו ספריית רשת ענקית בפייתון, אם צריך לתקשר עם שירותי רשת קיימים או בפרוטוקולים ידועים: