Python 网络扫描仪

Network scanner with Python

我正在尝试用 python 为 linux 制作一个网络扫描器,但我遇到了一些问题。

这是代码

 import scapy.all as scapy
 import optparse

 def get_user_input():
    my_object = optparse.OptionParser
    my_object.add_option("-i","-ip", dest="ip_address",help="please type ip address")
 (user_inputs,arguments)=my_object.parse_args()
 return user_inputs

 def scan(ip):
    arp_packet = scapy.ARP(pdst=ip)
    broadcast_packet = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
     arp_and_broadcast_packet = broadcast_packet/arp_packet
     answered_list = scapy.srp(arp_and_broadcast_packet,timeout=1)
     answered_list.summary()

def result_scan(scan_list):
print("IP\t\t\tMAC\n-----------------------------------------------------")
for client in scan_list:
    print(client["ip"]+ "\t\t" + client["mac"])

 user_ip_address = get_user_input()
 scan_network = user_ip_address.ipaddress

这是我遇到的问题:

  Traceback (most recent call last):
  File "Netscanner.py", line 23, in <module>
  user_ip_address = get_user_input()
  File "Netscanner.py", line 7, in get_user_input
  my_object.add_option("-i","-ip", dest="ip_address",help="please type ip address")
  TypeError: unbound method add_option() must be called with OptionParser instance as first 
  argument (got str instance instead)

您应该实例化 OptionParser 对象(忘记添加括号):

def get_user_input():
    my_object = optparse.OptionParser()
    my_object.add_option("-i", "--ip", dest="ip_address",help="please type ip address")

    ...

此外,您应该将第二个参数作为 --ip 传递。