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

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.

主站蜘蛛池模板: 兴宁市| 彭州市| 淮滨县| 沿河| 江达县| 凌云县| 霍山县| 东乡县| 勃利县| 玛纳斯县| 措勤县| 满城县| 宜君县| 青神县| 沙坪坝区| 乌拉特前旗| 饶河县| 宝清县| 安化县| 新田县| 鱼台县| 高雄市| 七台河市| 永安市| 延边| 潮安县| 旬邑县| 饶平县| 行唐县| 剑河县| 逊克县| 锡林郭勒盟| 澄城县| 石渠县| 天等县| 大姚县| 石阡县| 平凉市| 平乐县| 罗江县| 定边县|