簡體   English   中英

實時讀取服務器的終端輸出

[英]Real-time reading of terminal output from server

我正在嘗試從服務器上的相機處理圖像,並在本地計算機上實時處理后獲取信息。 我可以在服務器上以終端輸出的形式獲取必要的信息,但是在服務器程序運行之前,無法將此信息放入本地計算機上的python代碼中。 我嘗試了以下代碼:

cmd="sshpass -p 'pass' ssh -Y user@ip -t 'process_image; bash -l'"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1)
for line in iter(p.stdout.readline, b''):
    print(line)
    p.stdout.close()
    p.wait()

但這不起作用-看起來這段代碼只是暫停了我的程序。 我試圖將輸出寫入文件,而不是從本地計算機讀取文件,但是這會使我的數據失真。 如何實時讀取服務器的終端輸出?

由於使用bufsize=1 ,輸出將被行緩沖,因此您可以執行以下操作:

cmd="sshpass -p 'pass' ssh -Y user@ip -t 'process_image; bash -l'"
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, bufsize=1)
for line in p.stdout:
    print(line)
    .....

當然,這假設您的命令正在提供期望的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM