我正在编写一个小的portscan程序,运行时出现以下错误:
socket.gaierror:是否提供了[Errno 8]节点名或服务名
我发现一些帖子在讨论相同的错误,但这都与其他模块有关。我已经尝试过,所以我知道错误的来源。
我尝试过的事情:
socket.gethostbyname()
并输入例如域名Ill时,会得到该主机的IP。127.0.0.1
。为什么下面的代码不能与文件中的条目一起使用?我在加载/读取文件时做错了吗?在此先感谢您,真的很好奇这里的问题。
import os
import subprocess
import socket
import sys
def load_hosts():
file = open('hosts.txt', 'r')
hosts = file.readlines()
return hosts
def portscan():
hosts = load_hosts()
port = 80
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(4)
for host_ip in hosts:
result = sock.connect_ex((host_ip, port)) #Error is here
if result == 0:
print('[*] Port is open')
else:
print('[-] Port is closed')
sock.close()