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
    

     

    Verwante artikelen