Show Output of shell command in realtime

Python is a very powerful language that is used for automation. And a lot of times we create CLI tools using python. Python can be used to write a wrapper that would call Unix commands and we want to also see the output of those commands.

Let us see how we can use python to get the real-time output of any command executed by python.

from subprocess import Popen, PIPE

def run_generator(command):
    process = Popen(command, stdout=PIPE, shell=True)
    while True:
        line = process.stdout.readline().rstrip()
        if not line:
            break
        yield line


if __name__ == "__main__":
    unix_command = "ping -c 5 thetldr.tech"
    for result in run_generator(unix_command):
        print(result)

In the above example, we are using built-in subprocess module to get the response. run function is acting as a generator which is returning the output after every iteration.