zurück negative Ergebnisse in Schleife

Ich habe Probleme, das genaue Problem in meinem Code zu lokalisieren. Ich habe zwei Funktionen -inrange(), das prüft, ob ein Port in Reichweite ist, undfilt(), das eine txt-Datei annimmt, sucht nach den Schlüsselwörtern "UDP" oder "TCP", überprüft den Port (direkt nach dem: -Zeichen) und prüft, ob diese Nummer innerhalb des Bereichs liegt oder nicht.

def inrange(file,character, num): 
    with open(file, 'r') as r:
        for lines in r:
            for key, value in sshd.items():
                if character == key and character in lines:
                    if num in sshd.get(character):
                        return True
                    else:
                        return False

                elif character == key and character in lines:
                    if num in sshd.get(character):
                        return True
                    else:
                        return False

Dies ist speziell für sshd.

def filt(file):
    with open(file, 'r') as r:
        for i, line in enumerate(r):
            if "sshd"  in line:
                plusOne = i + 1
                newline = line.strip()
                splitIt = newline[7:22]
                my_string = splitIt.split(":", 1)[1]
                if inrange(file, "TCP", int(my_string)):
                    print("Line " + str(plusOne) + " is in range" + " " + my_string)    
                elif inrange(file, "UDP", int(my_string)):
                    print("Line " + str(plusOne) + " is in range" + " " + my_string)     
                else:
                    print("Not in range")

Jetzt funktioniert das, wenn ich das als meine Textdatei habe-

Aktive Verbindungen

  Proto  Local Address          Foreign Address        State           PID
  UDP    0.0.0.0:123             0.0.0.0:0             LISTENING       5987  sshd

ie Sie sehen können, befindet sich UDP 123 in Reichweite, wenn Sie sich das Wörterbuch ansehesshd über. Als Gegenleistung bekomme ich eine echte Aussage. Wenn ich UDP in TCP ändere, erhalte ich eine negative Aussage zurück. Das funktioniert. Das Problem tritt auf, wenn mehr als eine Zeile hinzugefügt wird.

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  UDP    0.0.0.0:123             0.0.0.0:0             LISTENING       5987  sshd
  TCP    0.0.0.0:123             0.0.0.0:0             LISTENING       5987  sshd
  UDP    0.0.0.0:123             0.0.0.0:0             LISTENING       5987  sshd
  TCP    0.0.0.0:123             0.0.0.0:0             LISTENING       5987   sshd

Ich erhalte alle positiven Ergebnisse zurück:

Line 5 is in range 123    
Line 6 is in range 123    
Line 7 is in range 123    
Line 8 is in range 123 

, was nicht der Fall sein sollte, da Zeile 6 und Zeile 8 TCPs in Port 123 sind, der sich nicht in Reichweite befindet. Ich habe das Gefühl, hier fehlt mir etwas Klares. Kann es nicht herausfinden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage