Een Shell opdracht uitvoeren met Python
Op deze pagina:
Je kunt opdrachten uitvoeren via de subprocess module.
Gebruikswijze:
import subprocess
subprocess.call("opdracht1")
subprocess.call(["opdracht1", "arg1", "arg2"])
Bijvoorbeeld de date opdracht:
import subprocess
subprocess.call("date")
Mogelijk resultaat:
vr 23 dec 2020 18:52:22 CET
Een voorbeeld met argumenten:
import subprocess
subprocess.call(["ls", "-l", "/etc/hosts"])
Mogelijk resultaat:
-rw-r--r-- 1 root root 6463 apr 23 2020 /etc/hosts
Je kunt de uitvoer van een opdracht ook in een variabele opslaan:
import subprocess
p = subprocess.Popen("date", stdout=subprocess.PIPE, shell=True)
(uitvoer, err) = p.communicate()
print ("Vandaag is het", uitvoer.decode('utf-8'))
Mogelijk resultaat:
Vandaag is het vr 23 dec 2020 19:16:06 CET
Een voorbeeld met de ping opdracht:
import subprocess
cmdping = "ping -c4 www.web2.nl"
p = subprocess.Popen(cmdping, shell=True, stderr=subprocess.PIPE)
while True:
out = p.stderr.read(1).decode('utf-8')
if out == '' and p.poll() != None:
break
if out != '':
print(out)
Mogelijk resultaat:
PING www.web2.nl (37.16.0.124) 56(84) bytes of data.
64 bytes from 37.16.0.124: icmp_seq=1 ttl=56 time=21.0 ms
64 bytes from 37.16.0.124: icmp_seq=2 ttl=56 time=20.8 ms
64 bytes from 37.16.0.124: icmp_seq=3 ttl=56 time=29.9 ms
64 bytes from 37.16.0.124: icmp_seq=4 ttl=56 time=35.6 ms
--- www.web2.nl ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 20.824/26.860/35.659/6.264 ms