在Tkinter中使用SSH发送命令?

0 投票
2 回答
2691 浏览
提问于 2025-04-17 17:13

我正在尝试把TCL代码转换成使用Tkinter的Python代码。 我想知道在Tkinter中,"spawn ssh"、"expect"和"send"这些功能对应的代码是什么? 比如,我的简单TCL程序可能是这样的:

spawn ssh root@138.120.###.###
expect "(yes/no)?" {send -- "yes\r"}
expect "password" {send -- "thepassword\r"}

2 个回答

0

pxpect 有一个叫做 pxssh 的模块,它可以简化处理简单的 ssh 会话的工作。我发现这个模块对于复杂的自动化操作来说不够用,所以我写了一个叫做 remote 的附加工具,以增强错误处理能力。

使用 pxssh

from pxssh import pxssh
p = pxssh()
p.login('host', 'user', 'password')
p.send('command')

使用 remote

from remote import remote
r = remote('host', 'user', 'password')
if r.login():
  r.send('command')

关于 Tkinter 的使用场景我不太确定,我猜测你是用它来制作图形界面(gui),而且网上有很多相关的教程。我之前用过 http://sebsauvage.net/python/gui/,它对比了 Tkinter 和 wxPython 两个库。

2

你可以试试使用pexpect

Expect是用来自动化其他命令行工具的。

补充一下:当然你可以通过Tkinter执行package require Expect,但这样做有什么好处呢?毕竟你还是在写Tcl代码,然后再用Python包装一层。

再补充一下:Tkinter是用来让Python访问Tk(一个很酷的图形界面工具包 :P),它的工作原理是调用Tcl命令。所以,只要你安装了合适的Tcl库,你可以把每一个Tcl程序都转换成Python程序。

撰写回答