WEB开发网
开发学院软件开发Python 探索 Pexpect,第 2 部分:Pexpect 的实例分析 阅读

探索 Pexpect,第 2 部分:Pexpect 的实例分析

 2009-08-29 00:00:00 来源:WEB开发网   
核心提示: logout方法 logout(self):发送'exit'给远程 ssh 主机,如果有 stopped jobs,探索 Pexpect,第 2 部分:Pexpect 的实例分析(10),会发送'exit'两次,例 5:telnet 的使用本例实现了如下功能:te

logout方法

logout (self):

发送'exit'给远程 ssh 主机,如果有 stopped jobs,会发送'exit'两次。

例 5:telnet 的使用

本例实现了如下功能:telnet 登录到某远程主机上,输入命令“ls -l”后,将子程序的执行权交还给用户,用户可以与生成的 telnet 子程序进行交互。

清单 6. telnet 的例子代码

#!/usr/bin/env python 
import pexpect 
 
# 即将 telnet 所要登录的远程主机的域名 
ipAddress = 'develperWorks.ibm.com' 
# 登录用户名 
loginName = 'root' 
# 用户名密码 
loginPassword = 'passw0rd' 
# 提示符,可能是’ $ ’ , ‘ # ’或’ > ’ 
loginprompt = '[$#>]' 
 
# 拼凑 telnet 命令 
cmd = 'telnet ' + ipAddress 
# 为 telnet 生成 spawn 类子程序 
child = pexpect.spawn(cmd) 
# 期待'login'字符串出现,从而接下来可以输入用户名 
index = child.expect(["login", "(?i)Unknown host", pexpect.EOF, pexpect.TIMEOUT]) 
if ( index == 0 ): 
  # 匹配'login'字符串成功,输入用户名. 
  child.sendline(loginName) 
  # 期待 "[pP]assword" 出现. 
  index = child.expect(["[pP]assword", pexpect.EOF, pexpect.TIMEOUT]) 
  # 匹配 "[pP]assword" 字符串成功,输入密码. 
  child.sendline(loginPassword) 
  # 期待提示符出现. 
  child.expect(loginprompt) 
  if (index == 0): 
    # 匹配提示符成功,输入执行命令 'ls -l' 
    child.sendline('ls -l') 
    # 立马匹配 'ls -l',目的是为了清除刚刚被 echo 回显的命令. 
    child.expect('ls -l') 
    # 期待提示符出现. 
    child.expect(loginprompt) 
    # 将 'ls -l' 的命令结果输出. 
    print child.before 
    print "Script recording started. Type ^] (ASCII 29) to escape from the script 
       shell." 
    # 将 telnet 子程序的执行权交给用户. 
    child.interact() 
    print 'Left interactve mode.' 
  else: 
    # 匹配到了 pexpect.EOF 或 pexpect.TIMEOUT,表示超时或者 EOF,程序打印提示信息并退出. 
    print "telnet login failed, due to TIMEOUT or EOF" 
    child.close(force=True) 
else: 
  # 匹配到了 pexpect.EOF 或 pexpect.TIMEOUT,表示超时或者 EOF,程序打印提示信息并退出. 
  print "telnet login failed, due to TIMEOUT or EOF" 
  child.close(force=True)

上一页  5 6 7 8 9 10 

Tags:探索 Pexpect 部分

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接