有时候,我们需要让远端服务器执行某些命令,使用基于 Tcl 和 Expect 的 shell 脚本可以实现,但如果对 tcl 和 expect 语法不太熟悉,那么写起来就比较麻烦。在 python 中,可以通过 pxssh 库来实现这个功能,代码简单,使用方便,如下所示:
from pexpect import pxssh
import getpass
try:
s = pxssh.pxssh()
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login(hostname, username, password)
s.sendline('uptime') # run a command
s.prompt() # match the prompt
print(s.before) # print everything before the prompt.
s.sendline('ls -l')
s.prompt()
print(s.before)
s.sendline('df')
s.prompt()
print(s.before)
s.logout()
except pxssh.ExceptionPxssh as e:
print("pxssh failed on login.")
print(e)
参考资料:
1. pxssh - control an SSH session — Pexpect 4.8 documentation