@Zhazira_N

Как проверить доступность списка IP:Port из txt файла?

Есть текстовый файл со следующим списком:
178.237.187.66:53389
82.116.48.210:50000
213.184.149.46:60000
109.74.133.46:4455
78.110.245.206:3398
89.109.52.230:1001
88.135.48.69:3398
Как периодически проверять доступность IP:port через "socket" и создавать новый файл со списком доступных IP:port. То есть 2 файла ip.txt со списком всех адресов и ipUP.txt со списком только активных адресов, С очисткой предыдущих значений.
import socket
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(2)                                      #2 Second Timeout
    result = sock.connect_ex(('127.0.0.1',80))
    if result == 0:
      print 'port OPEN'
    else:
      print 'port CLOSED, connect_ex returned: '+str(result)


import re
    
    with open('traffic.txt', 'r') as file:
        fi = file.readlines()
    re_ip = re.compile("^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
    re_port = re.compile("^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$\:(\d+)")
    
    for line in fi:
        ip = re.findall(re_ip,line)
        port = re.findall(re_port,line)
        print port , ip


Возможно плохо искала, но все что нашли в интернете по поиску.
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
Обязательно на python?

с помощью nmap можно проверить работает или нет, а с помощью parallel можно запускать одновременно несколько проверок (в данном пример он будет пытаться держать запущенными 10 nmap, по завершении одного, будет брать следующий ip:port и запускать новый экземпляр)
parallel -j10 --colsep ':' '
    nmap_result=$(nmap -p {2} {1} | grep "open")
    if [ -n "$nmap_result" ]; then
        echo "{1}:{2} - OPEN" >> results.log
    else
        echo "{1}:{2} - CLOSED" >> results.log
    fi
' < servers.txt
Ответ написан
Комментировать
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
С помощью psping: https://learn.microsoft.com/en-us/sysinternals/dow... By Mark Russinovich.
import subprocess


# Функция для проверки доступности IP:port с помощью psping
def check_ip(ip_port):
    try:
        print(f"Проверяем доступность {ip_port}", end='')
        # Выполняем команду psping
        result = subprocess.run(['psping', ip_port], capture_output=True, text=True)
        # Проверяем, есть ли в выводе сообщение об успешном пинге
        if "(0% loss)" in result.stdout:
            print(f"\rПроверяем доступность {ip_port} - доступен")
            return True
        if "(25% loss)" in result.stderr or "50% loss" in result.stdout:
            print(f"\rПроверяем доступность {ip_port} - потери пакетов")
            return True
        if "(100% loss)" in result.stdout:
            print(f"\rПроверяем доступность {ip_port} - недоступен")
            return False
    except Exception as e:
        print(f"Ошибка при проверке {ip_port}: {e}")
    return False


# Чтение IP:port из файла и запись доступных в другой файл
def check_ips_from_file(input_file, output_file):
    with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
        for line in infile:
            ip_port = line.strip()  # Убираем лишние пробелы и символы новой строки
            if check_ip(ip_port):
                outfile.write(ip_port + '\n')  # Записываем доступный IP:port в файл


# Указываем имена файлов
input_file = 'ip.txt'
output_file = 'ipUP.txt'

# Запускаем проверку
check_ips_from_file(input_file, output_file)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы