Ich habe Probleme, das genaue Problem in meinem Code zu lokalisieren. Ich habe zwei Funktionen - inrange()
, die überprüft, ob ein Port in Reichweite ist, und filt()
, die eine TXT-Datei nimmt, sucht nach den Schlüsselwörtern "UDP" oder "TCP", schaut auf den Port (gleich nach dem: Zeichen) und überprüft, ob diese Zahl innerhalb des Bereichs liegt oder nicht.negative Ergebnisse in Schleife zurück
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 für jetzt.
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 dies als meinen Text haben File-
Aktive Verbindungen
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:123 0.0.0.0:0 LISTENING 5987 sshd
wie Sie sehen können, UDP 123 ist in Reichweite, wenn Sie im Wörterbuch suchen sshd
oben . Ich bekomme eine wahre Aussage zurück. Wenn ich UDP zu TCP ändere, gibt es mir eine negative Aussage zurück. Das funktioniert. Das Problem tritt auf, wenn ich mehr als eine Zeile hinzufüge.
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 wieder alle positiven Ergebnisse:
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, als Linie 6 und Linie 8 TCPs sind in Port 123, die nicht in Reichweite ist. Ich fühle mich, als würde ich hier etwas klar übersehen. Kann es nicht herausfinden.
Eine schnelle Debugging-Frage - welche Codezeile macht das Drucken? Vielleicht machen deine 'print'-Aufrufe so etwas wie' Line ... ist eine UDP-Zeile in Reichweite ... '. Das kann helfen, den Fehler zu lokalisieren – dwanderson
Warum sind die 'if'- und' elif'-Abschnitte in der 'inrange'-Funktion identisch? –
@ PM2Ring Vergessen, das zu verwerfen. Ich habe meiner Inrange-Funktion eine Zeicheneingabe hinzugefügt. –