Python 使用Pexpect生成终端窗口和SSH命令
我尝试使用Python和Pexpect模块完成两件事:Python 使用Pexpect生成终端窗口和SSH命令,python,macos,ssh,terminal,pexpect,Python,Macos,Ssh,Terminal,Pexpect,我尝试使用Python和Pexpect模块完成两件事: 打开多个终端窗口(在Mac上)以显示输出 向每个终端窗口分别发送一个ssh命令(每个窗口将ssh到不同的主机,然后运行另一个命令) 这是我当前的代码: import pexpect import time from subprocess import * command = "/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal ssh user@host" ssh_tu
import pexpect
import time
from subprocess import *
command = "/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal ssh user@host"
ssh_tunnel = pexpect.spawn (command)
ssh_tunnel.expect ('Password:')
time.sleep (0.1)
ssh_tunnel.sendline ("password")
time.sleep (60) #
ssh_tunnel.expect (pexpect.EOF)
我看到的问题是,我能够打开一个新的终端应用程序,但是,该终端上没有运行任何命令
我还看到一个问题,试图产生多个窗口。当我尝试这样做时:
ssh_tunnel = pexpect.spawn("/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal")
ssh_tunnel.expect ('test')
ssh_tunnel2 = pexpect.spawn("/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal")
ssh_tunnel2.expect ('test')
我只生成一个终端窗口
我尝试了python中的subprocess模块来生成多个终端窗口,效果很好,但我知道subprocess处理ssh的能力不如处理pexpect
子流程模块代码:
from subprocess import *
command = '/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal'
new_terminal = Popen(command, stdin=PIPE, stderr=PIPE, stdout=PIPE, shell=True)
pexpect设计用于使用CLI命令,而不是GUI应用程序。与
ssh_tunnel.expect(pexpect.EOF)
不同,您是否可以提供“$”to expect?+1,用于询问与编程和开发有关的ssh问题。@MaheshKaria您好,我尝试用“$”替换expect语句,但是,终端生成了。应用程序确实启动了,但终端没有弹出。@pynexj您好,我仍在寻找解决此问题的替代方案,并找到了一些推荐方案,如fabric。尽管如此,我仍在测试它是否可以在python中使用,或者我应该在bash或powershell中使用它。pexpect设计用于使用CLI命令,而不是GUI应用程序。而不是ssh_tunnel.expect(pexpect.EOF)
你能提供“$”以期望吗?+1来询问与编程和开发有关的ssh问题。@MaheshKaria Hi,我试图用“$”替换expect语句,但是,终端spawn。应用程序确实启动了,但终端没有弹出。@pynexj您好,我仍在寻找解决此问题的替代方案,并找到了一些推荐方案,如fabric。尽管如此,我仍在测试它是否可以在python中使用,还是应该在bash或powershell中使用。