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.