Не работает проверка if not in
for host in hosts:
with open(f'current_{host}', 'r') as ex_ports:
ex_ports = ex_ports.readlines()
for line in ex_ports:
ports.append(line.strip('\n').strip())
with open(f'current_{host}', 'w') as c_host:
print (f'{host} : {ports}')
for port in range(1, 65535):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((host, port))
if result == 0:
if port not in ports:
message = f"Host: {host}, Port: {port} is open."
# send_telegram_message(telegram_token, chat_id, message)
print (port)
c_host.write (f'{port}\n')
Почему на срабатывает проверка if not in
? Подобный метод и раньше использовал, все работало. В этом коде выдает все открытые порты, не обращая внимание на это сравнение.
Ответы (1 шт):
Автор решения: proffessor17
→ Ссылка
Исправить можно двумя способами:
- Преобразовать строки в числа при чтении:
with open(f'current_{host}', 'r') as ex_ports: ex_ports = ex_ports.readlines() for line in ex_ports: ports.append(int(line.strip('\n').strip()))
- Или преобразовать
port
в строку при сравнении:if str(port) not in ports: