obtener resultados negativos en bucle

Tengo problemas para identificar el problema exacto en mi código. Tengo dos funcionesinrange(), que comprueba si un puerto está dentro del rango yfilt(), que toma un archivo txt, busca las palabras clave "UDP" o "TCP", mira el puerto (justo después de la marca:) y comprueba si ese número está dentro del rango o no.

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

Esto es específicamente para sshd por ahora.

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")

Ahora esto funciona si tengo esto como mi archivo de texto

Conexiones activas

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

como puede ver, UDP 123 está dentro del rango si mira el diccionariosshd encima. Recibo una declaración verdadera a cambio. Si cambio UDP a TCP, me devuelve una declaración negativa. Eso funciona. El problema ocurre cuando agrego más de una línea a esto.

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

Vuelvo todos los resultados positivos:

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

lo cual no debería ser el caso, ya que la línea 6 y la línea 8 son TCP en el puerto 123, que no está dentro del rango. Siento que me falta algo claro aquí. No puedo entenderlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta