使用SSH打开和写入多个终端的Python脚本

xiozqbni  于 2023-04-19  发布在  Python
关注(0)|答案(1)|浏览(134)

我有一个Jetson AGX,上面连接了几个摄像头。为了从我的Windows PC控制摄像头,我用SSH连接到了Jetson。
为了开始捕捉图像从几个摄像头在一次,我需要多个终端打开.到目前为止,我有这个:

import os

os.system('start cmd /c "ssh jetson_name@IP_adress"')
os.system('start cmd /c "ssh jetson_name@IP_adress"')
os.system('start cmd /c "ssh jetson_name@IP_adress"')

这将打开我的Windows PC上的3个终端,每个终端都建立了与Jetson的连接。到目前为止一切顺利。
1.我打开一个终端后,我该如何向它写入?这是一个有点愚蠢的问题,但我只知道如何打开cmd并向它传递one命令-在本例中,向jetson传递命令to ssh。在此之后,我想传递命令以开始流式传输。
1.我想从3个摄像头同时开始流式传输。上述过程非常慢。所以,我可以打开3个终端,如上所述,然后分别向终端传递命令以开始流式传输吗?
stream的命令类似于:

v4l2-ctl -d /dev/video0 --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img.raw

任何帮助赞赏!

pw9qyyiw

pw9qyyiw1#

你试过subprocess吗?

import subprocess

addresses=['jetson_name@IP_address1','jetson_name@IP_address2','jetson_name@IP_address3']
# Open three terminals and store the Popen objects in a list
terminals = []
for address in addresses:
    cmd = ['ssh', '-t', address]
    terminal = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
    terminals.append(terminal)

# Send a command to each terminal
for count,terminal in enumerate(terminals):
    command = f'v4l2-ctl -d /dev/video0 --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img{count}.raw'
    terminal.stdin.write(command.encode())
    terminal.stdin.flush()

相关问题