Для проверки доступности IP-адресов и портов, указанных в текстовом файле, и создания нового файла с активными адресами, вы можете следовать следующему алгоритму:
1. Чтение IP-адресов и портов из файла.
2. Проверка доступности каждого IP-адреса и порта с помощью функции `socket.connect_ex()`.
3. Сохранение активных адресов в новый файл.
4. Очистка содержимого предыдущих файлов перед записью новых данных.
Вот более полная версия кода, которая иллюстрирует этот процесс:
```python
import socket
import re
import time
# Функция проверки доступности IP-адреса с портом
def check_ip_port(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2) # 2-секундный таймаут
result = sock.connect_ex((ip, port))
sock.close()
return result == 0 # Вернуть True, если порт открыт
# Функция для чтения IP-адресов и портов из файла
def read_ip_ports(file_path):
with open(file_path, 'r') as file:
lines = file.readlines()
ip_ports = []
for line in lines:
match = re.search(r'(\d{1,3}(?:\.\d{1,3}){3}):(\d+)', line)
if match:
ip = match.group(1)
port = int(match.group(2))
ip_ports.append((ip, port))
return ip_ports
# Функция для записи активных IP-адресов в файл
def write_active_ip_ports(file_path, active_ips):
with open(file_path, 'w') as file:
for ip, port in active_ips:
file.write(f"{ip}:{port}\n")
# Главная функция
def main():
input_file = 'ip.txt'
output_file = 'ipUP.txt'
# Очистка предыдущих данных в файлах
open(input_file, 'w').close()
open(output_file, 'w').close()
# Заполнение тестового файла (добавьте свои адреса)
with open(input_file, 'w') as file:
file.write("178.237.187.66:53389\n")
file.write("82.116.48.210:50000\n")
file.write("213.184.149.46:60000\n")
file.write("109.74.133.46:4455\n")
file.write("78.110.245.206:3398\n")
file.write("89.109.52.230:1001\n")
file.write("88.135.48.69:3398\n")
while True:
active_ips = []
ip_ports = read_ip_ports(input_file)
for ip, port in ip_ports:
if check_ip_port(ip, port):
active_ips.append((ip, port))
write_active_ip_ports(output_file, active_ips)
print(f"Проверка завершена. Активные IP-адреса и порты записаны в {output_file}.")
# Пауза перед следующей проверкой (например, 60 секунд)
time.sleep(60)
if __name__ == "__main__":
main()
```
### Описание кода:
- **Функция `check_ip_port`**: проверяет, доступен ли указанный IP-адрес и порт. Если соединение успешно (т.е. порт открыт), возвращает `True`, иначе - `False`.
- **Функция `read_ip_ports`**: считывает пары IP-адресов и портов из указанного файла с помощью регулярных выражений.
- **Функция `write_active_ip_ports`**: записывает активные IP-адреса с портами в выходной файл.
- **Основная функция `main`**:
- Очищает содержимое файлов `ip.txt` и `ipUP.txt`.
- Заполняет файл `ip.txt` тестовыми значениями (можно заменить на ваши адреса).
- Запускает бесконечный цикл, в котором происходит проверка IP-адресов и их портов с записью активных в файл `ipUP.txt`.
- В конце каждого цикла идет пауза в 60 секунд (измените на нужное вам время).
Этот код можно сохранить в файл (например, `check_ip_ports.py`) и запустить. Убедитесь, что вы запускаете его с правами, позволяющими устанавливать соединения.