Как я могу использовать команду Баш в питона, например:Bash в программе питона
# ifconfig eth0 promisc
в коде, как:
import socket
# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))
# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# receive all packages
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# receive a package
print s.recvfrom(65565)
# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
вместо s.ioctl
, потому что Linux не поддерживает эту команду?
@PadraicCunningham: Я бы предпочел, чтобы мы не продвигали пренебрежение кодами возврата. 'check_call' всегда следует использовать по умолчанию, если не существует конкретной причины, по которой ошибки следует игнорировать. –
Посмотрите на использование 'fcntl.ioctl' вместо того, чтобы обрезать' ifconfig', если 'socket.ioctl' недоступен. (Или используйте его в предпочтении 'socket.ioctl'.) – chepner