如何运行 sudo arp-scan 然后将输出转换成数组如 [‘1’, ‘2’, …] :import subprocessimport sysimport pandas as pddef run_process(exe): proc = subprocess.Popen(exe, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while True: return_code = proc.poll() char = proc.stdout.read(1)
if return_code is not None and len(char) == 0: break yield char.decode('utf-8')
text = ’’for char in run_process(‘sudo arp-scan –interface=wlan0 –localnet| awk “{print $1}”|tail -n +3|head -n -2’.split()): sys.stdout.write(char) text += char
子进程的输出:
arp-scan: unrecognized option ‘–localnet|’Usage: arp-scan [options] [hosts…]
Target hosts must be specified on the command line unless the –file option isgiven, in which case the targets are read from the specified file instead, orthe –localnet option is used, in which case the targets are generated fromthe network interface IP address and netmask.
You will need to be root, or arp-scan must be SUID root, in order to runarp-scan, because the functions that it uses to read and write packetsrequire root privilege.
The target hosts can be specified as IP addresses or hostnames. You can alsospecify the target as IPnetwork/bits (e.g. 192.168.1.0/24) to specify all hostsin the given network (network and broadcast addresses included), orIPstart-IPend (e.g. 192.168.1.3-192.168.1.27) to specify all hosts in theinclusive range, or IPnetwork:NetMask (e.g. 192.168.1.0:255.255.255.0) tospecify all hosts in the given network and mask.
These different options for specifying target hosts may be used both on thecommand line, and also in the file specified with the –file option.
use “arp-scan –help” for detailed information on the available options.
Report bugs or send suggestions at https://github.com/royhills/arp-scanSee the arp-scan homepage at https://github.com/royhills/arp-scan
当我只使用 sudo arp-scan –interface=wlan0 –localnet 时它可以工作,但我需要输出与下面的完全相同:
os.sytem 的源代码及其输出:import osimport pandas as pdimport numpy as npimport time as timeimport subprocessimport syswhile True: all_function = os.system(“sudo arp-scan –interface=wlan0 –localnet| awk ‘{print $1}’|tail -n +3|head -n -2”) time.sleep(5) 它的输出:
192.168.50.150192.168.50.194