#python #sockets
#python #сокеты
Вопрос:
Я пытаюсь создать скрипт, который будет сканировать все мои серверы и сообщит мне, может ли он сканировать этот сервер или нет.
В настоящее время я использую библиотеки csv и socket для достижения этой цели.
Проблема, с которой я сталкиваюсь, заключается в том, что при запуске этого он работает нормально для первых 5 IP-адресов в моем списке, но как только он успешно сканирует один из моих серверов и сообщает о нем как о запущенном, он мгновенно заполняет остальные журналы с помощью моего оператора печати «Хост» недоступен.
И выдает мне WinError 10056 для недоступных IP-адресов и сообщает об ошибке WinError 10061 для всех записей после успешного сканирования и сообщает о первом доступном IP-адресе как ip. Я знаю, что другие IP-адреса запущены и должны отображаться как up, я могу сканировать их по отдельности, используя этот же скрипт без проблем.
Любые предложения будут с благодарностью приняты.
Пример того, что хотел бы мой csv:
Servers Port
192.168.1.200 12334
192.168.1.201 43222
192.168.1.202 24
192.168.1.203 5
192.168.1.204 8080
192.168.1.205 445
192.168.1.206 5
192.168.1.207 5
192.168.1.218 443
192.168.1.219 80
192.168.1.220 8834
192.168.1.221 80
import csv
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def portScanner():
with open('IPAddress.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
Host = str(row['Servers'])
Port = int(row['Port'])
Scan = sock.connect_ex((Host, Port))
sock.settimeout(int(30))
if Scan:
print(f"Scanning Complete: {Host} is Offline or Port {Port} is unreachable.")
print("DEBUG: " str(Scan))
else:
print(f"Scanning Complete: {Host} is reachable on Port {Port}.")
print("DEBUG: " str(Scan))
portScanner()
Комментарии:
1. Не изобретайте велосипед, используйте вместо этого nmap
2. Может быть, речь идет о попытке открыть новое соединение с тем же сокетом после того, как вы уже использовали его для подключения других хостов? В этом случае закрытие его с помощью mysocket.close () должно помочь.
3. Наряду с другими предложениями в комментариях попробуйте добавить задержку между каждым запросом, поскольку возможно, что ваш маршрутизатор / прокси мог заблокировать дальнейшие подключения из-за частых запросов на подключение, чтобы предотвратить DDoS-атаку.