Python не может использовать команду ping scapy run на сервере windows - PullRequest
1 голос
/ 02 февраля 2020

Я запускаю python на Windows сервере, чтобы пропинговать хост со scapy, как этот код.

from scapy.all import *

    def check_down():
        ip = ['192.168.1.111']
        for w in ip:  
            resp = sr1(IP(dst=w)/ICMP(),timeout=10)

            if resp == None:
                print("This host is down " + w)
                time.sleep(10*60)

    while True:

        check_down()

Когда я запускаю этот код, он показывает ошибку:

    Begin emission:
Finished sending 1 packets.
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\thingspeak_line.py", line 98, in <module>
    check_down()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\thingspeak_line.py", line 83, in check_down
    resp = sr1(IP(dst=w.rstrip())/ICMP(),timeout=10)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\scapy\sendrecv.py", line 489, in sr1
    ans, _ = sndrcv(s, x, *args, **kargs)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\scapy\sendrecv.py", line 261, in sndrcv
    sndrcver = SndRcvHandler(*args, **kwargs)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\scapy\sendrecv.py", line 136, in __init__
    self._sndrcv_rcv(snd_thread.start)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\scapy\sendrecv.py", line 243, in _sndrcv_rcv
    self.sniffer._run(
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\scapy\sendrecv.py", line 925, in _run
    session.on_packet_received(p)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\scapy\sessions.py", line 47, in on_packet_received
    result = self.prn(pkt)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\scapy\sendrecv.py", line 219, in _process_packet
    os.write(1, b"*")
OSError: [Errno 9] Bad file descriptor

Это нет ошибки при запуске на Windows 10. Я хочу пинговать много хостов. Как я могу это исправить?

...