在Pexpect模块中,pexpect.pxssh.pxssh类扩展自pexpect.spawn类,专用于SSH连接的设置。
通过pxssh类的login()方法,在第一次连接远程SSH服务器的时候,能够将服务器的证书保存在known_hosts中。
pxssh类支持通过密钥认证,而无需输入密码。
pxssh类使用的Shell提示符能够兼容大多数Borne/Bash或Csh。
基本使用示例如下:
- 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)
设置SSH连接的参数
- s = pxssh.pxssh(options={
- "StrictHostKeyChecking": "no","UserKnownHostsFile": "/dev/null"})
- ...
禁用密钥认证,只能通过密码认证
- s.force_password = True
- s.login (hostname,password)
参考链接:
https://pexpect.readthedocs.io/en/stable/api/pxssh.html