官术网_书友最值得收藏!

Pexpect and SSH

If you try to use the previous telnet example and just plug into a ssh session, you might find yourself pretty frustrated. You always have to include the username in the session, ssh new key question, and more such. There are many ways to make ssh sessions work, but luckily, Pexpect has a subclass called pxssh, which specializes setting up SSH connections. The class adds methods for login, logout, and various tricky things to handle many situation in the ssh login process. The procedures are mostly the same with the exception of login() and logout():

>>> from pexpect import pxssh
>>> child = pxssh.pxssh()
>>> child.login('172.16.1.20', 'cisco', 'cisco', auto_prompt_reset=False)
True
>>> child.sendline('show version | i V')
19
>>> child.expect('iosv-1#')
0
>>> child.before
b'show version | i VrnCisco IOS Software, IOSv Software (VIOS-ADVENTERPRISEK9-M), Version 15.6(2)T, RELEASE SOFTWARE (fc2)rnProcessor board ID 9MM4BI7B0DSWK40KV1IIRrn'
>>> child.logout()
>>>

Notice the 'auto_prompt_reset=False' argument in the login() method. By default, pxssh uses the shell prompt to synchronize the output. But since it uses the PS1 option for most of bash or Csh, they will error out on Cisco or other network devices.

主站蜘蛛池模板: 卢龙县| 清水县| 河曲县| 聊城市| 民权县| 孙吴县| 喀喇沁旗| 泊头市| 澎湖县| 吴堡县| 万宁市| 珲春市| 岑巩县| 红安县| 柘荣县| 墨脱县| 临安市| 察雅县| 南康市| 双江| 永新县| 乐至县| 星座| 蕲春县| 岚皋县| 河间市| 婺源县| 开封市| 唐河县| 海丰县| 永宁县| 陈巴尔虎旗| 什邡市| 合作市| 奎屯市| 宾川县| 冕宁县| 峨眉山市| 南召县| 兴国县| 石楼县|