[Python] Emulare il comando ping...

Alan Franzoni mailing a franzoni.eu
Ven 23 Mar 2012 09:39:07 CET


On 03/14/2012 10:45 AM, Daniele Varrazzo wrote:
>>> Purtroppo questo richiede privilegi di root.

Intervengo (tanto per fare la punta) per segnalare che questo non è
necessariamente vero; su Linux è possibile dare all'eseguibile la
capability CAP_NET_RAW per concedere l'apertura di raw socket. Se poi
sia una buona idea farlo systemwide per l'eseguibile Python o meno lo
lascio decidere a voi :-)


alan a afrastation:~/temp$ python rawsock.py
Traceback (most recent call last):
  File "rawsock.py", line 2, in <module>
    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
  File "/usr/lib/python2.7/socket.py", line 187, in __init__
    _sock = _realsocket(family, type, proto)
socket.error: [Errno 1] Operation not permitted
alan a afrastation:~/temp$ sudo python rawsock.py
alan a afrastation:~/temp$ sudo setcap CAP_NET_RAW+ep /usr/bin/python2.7
alan a afrastation:~/temp$ python rawsock.py
alan a afrastation:~/temp$ cat rawsock.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)



-- 
Latest blog post: Deploying WAR on Heroku http://t.co/M4krW2Mu
contact me at public@[mysurname].eu


Maggiori informazioni sulla lista Python