对于我的介绍类,我必须创建一个扫描Web服务器的脚本。扫描应该在模块中实现,用户输入和输出应该在导入模块的脚本中实现。
到目前为止我的实际脚本(不是我有这个模块)
#!/usr/bin/python3
import re
import socket
hostServer = input("Enter an IP address or list (seperated by commas) to scan: ").split(',')
import socketmodule
print("-" * 60)
print("Please wait, scanning remote host", remoteServer)
print("-" * 60)
我目前在我的模块中有这个
#!/usr/bin/python3
import socket
s=socket.socket()
s.connect((hostServer, 80)) # I'm getting an error for using hostServer but
how else should I pass the list of IP
addresses into my module?
s.send(b'GET / HTTP/1.0\n\n')
s.recv(1024)
while True:
data.s.recv(1024)
if data:
print('Recieved {} bytes from client at {}.\n{}'.format(len(data), addr, data))
conn.sendall(data)
break
s.close()
有人可以指导我摆脱这种混乱
答案 0 :(得分:0)
您需要为每个端口创建一个套接字,这意味着您只能通过导入模块来使用普通方法调用。
#!/usr/bin/python3
import socket
class PortListener(object):
CHUNK_SIZE = 1024
def __init__(self, host_server, port):
self.host = host_server
self.port = port
def listen(self):
self.socket = socket.socket()
self.socket.connect((self.host, self.port))
self.socket.send(b'GET / HTTP/1.0\n\n')
while True:
data = self.socket.recv(self.CHUNK_SIZE)
if data:
print('Recieved {} bytes from client at {}.\n{}'.format(len(data), '{}:{}'.format(self.host,
self.port), data))
def close(self, type, value, traceback):
self.socket.close()
然后,为每个端口创建一个侦听器实例
from socketmodule import PortListener
listener = PortListener('127.0.0.1', 5000)
对于保留端口(1024以下的任何端口),您需要root访问权限才能收听它。
您可能需要考虑一个循环来创建一个侦听器池,以便从多个端口接收数据。完成与Web服务器的交互后,请确保套接字已关闭。