在Tkinter中使用SSH发送命令?
我正在尝试把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程序。