ספרייה לניתוח התקשורת ברשת

שלום, במסגרת עבודה על פרוייקט אני צריך לראות את התקשורת במחשב. אשמח להמלצות על ספריות בפייתון שנותנות מידע כמו שרואים ב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 שזו ספריית רשת ענקית בפייתון, אם צריך לתקשר עם שירותי רשת קיימים או בפרוטוקולים ידועים: