Ich schreibe ein einfaches Python-Skript unter Linux, um eine Charge von gleichzeitigen einzelnen Pings an Hosts in meinem Subnetz mit subprocess
zu tun.python subprocess.call Argumente Problem
manuell der Befehl funktioniert: ping -c 1 192.168.68.1
Das Skript ::
#!/usr/bin/python
from subprocess import call
path = "ping"
flags = "-c 1 "
for i in range(1,3):
ip_addr = "192.168.68." + str(i)
args = flags + ip_addr
print "doing: {} {}".format(path, args)
call([path, args])
Anruf kommentiert out gibt die erwarteten:
doing: ping -c 1 192.168.68.1
doing: ping -c 1 192.168.68.2
Mit call()
, das Skript scheint ping zu nennen, aber mit unbekannten Argumenten. Ausgabe wie folgt:
doing: ping -c 1 192.168.68.1
Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-l preload] [-m mark] [-M pmtudisc_option]
[-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
[-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
[-W timeout] destination
doing: ping -c 1 192.168.68.2
Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-l preload] [-m mark] [-M pmtudisc_option]
[-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
[-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
[-W timeout] destination
Es scheint ping
für jede Iteration zweimal aufgerufen wird mit verschiedenen args
zu dem, was ich erwarte. Ich notiere das -6
Argument ping beschwert sich über.
Ich würde jede Hilfe, besonders im Hinblick auf die Verwendung von call()
richtig zu schätzen wissen.
Update:
Added Bash-Skript ich versucht bin zu emulieren:
#!/bin/bash
for ip in $(seq 1 2); do
ping -c 1 192.168.68.$ip &
done
'call ([Pfad, flags.strip(), ip_addr]) ' – ozgur