`
lhq1013
  • 浏览: 88051 次
  • 性别: Icon_minigender_2
  • 来自: 丽水
社区版块
存档分类
最新评论

TCL/Expect读取配置文件内容

阅读更多

config.xml配置文件如下:------------------------------------------------

name=tester ;#用户名

password=vmkid ;#密码


common.exp脚本如下:---------------------------------------------------

#!/usr/bin/expect

proc getConfig {configFile Key {Comment "#"} {Equal "="}} {    ;#过程中如果参数有缺省值,使用花括号引起,并赋值 
  set Value ""                   ;# 记录过程返回的值   
  # 打开配置文件 
  set err [catch {set fileid [open $configFile r]} errMsg] 
  if {$err == 1} { 
    puts "errMsg : $errMsg" 
    return $Value 
  } 
  # 成功打开文件后, 一行一行的加以分析 
  set rowid 0                       ;#记录当前行数,程序调试时打印调试信息使用的 
  while {[eof $fileid] != 1} {                 ;# 读取文件内容 
    incr rowid                          ;# 记录行数, 从一开始 
    gets $fileid line     ;# 读出一行 
    # 先去掉注释, 再去掉两端的空格 
    set commentpos [string first $Comment $line]        ;# 得到注释符号的位置 
    if { $commentpos != 0 } { 

      # 行以注释符号开头,忽略掉该行 
  } else { 
   if { $commentpos != -1 } {        ;# 行中有注释符号,去掉注释 
    set line [string range $line 0 [expr $commentpos-1]] 
   } 
   set line [string trim $line]          ;# 去掉两端的空格 
   # puts "$rowid : line : $line" 
   # 如果是空就继续循环 
   if { $line == "" } { 
    continue 
    } else {
    set equalpos [string first $Equal $line]   ;# 得到等号的位置 
    if { $equalpos != -1} { 
      # 如果就是找寻的key,结束循环 
     if { [string range $line 0 [expr $equalpos - 1]] == $Key } { 
      set Value [string range $line [expr $equalpos + 1] [string length $line]] 
      break 
     } 
    }
   } 
  } 
 } 
 # 关闭文件 
 close $fileid 

 #返回值
 return $Value 
} 

set val [getConfig "config.xml" "password"] 
puts "---------val: $val"

exit
expect eof

 

分享到:
评论

相关推荐

    linux实现交互执行:expect

    `expect`的基本工作原理是通过读取脚本中的指令,监控标准输出和错误输出,等待特定的模式出现,然后根据预设的规则向进程发送相应的输入。这种方式使得我们能够编写脚本来自动处理那些需要人机交互的情况,比如SSH...

    TCL脚本语言编程资料

    TCL提供了读写文件的命令,如`open`、`close`、`gets`和`puts`,可以进行文件的读取、写入和追加操作。 **8. 错误处理与异常** `catch`命令可以捕获并处理错误,`error`用于抛出异常。 **9. 脚本解释器 Tk** TCL与...

    expect中文man

    - `[-n]`:不读取期望库(expect library),通常用于避免加载默认配置。 - `[-v]`:显示版本信息。 - `[-f]`:指定一个脚本文件作为命令来源。 - `[-b]`:将标准输入作为命令来源。 - `cmdfile`:包含expect命令的...

    TCL脚本学习资料——入门必看

    下面将根据提供的压缩包文件内容,详细讲解TCL脚本的学习知识点。 一、TCL基础语法 1. 变量:在TCL中,变量声明是不需要关键字的,直接赋值即可创建。如`set name "John"`用于设置一个字符串类型的变量。 2. 命令与...

    tdom & expect 使用方法

    例如,你可以先用`tdom`读取XML配置,然后用`expect`连接到远程设备并应用这些配置。 总之,`tdom` 和 `expect` 提供了强大的XML处理和自动化交互能力,是TCL开发者不可或缺的工具。熟悉它们的使用能够极大地提升...

    solaris 工具expect安装包

    3. `libgcc-3.4.6-sol9-sparc-local.gz`: 这是`GCC`(GNU Compiler Collection)的一个库文件,可能是因为`expect`或`TCL`的编译和运行需要这个版本的`libgcc`。 4. `expect-5.45-sol9-sparc-local.gz`: 最后,这是`...

    TCL 脚本语言语法 用于控制台测试

    3. **文件操作**:`open`、`read`、`write`、`close`等命令用于读写文件,可用于验证程序输出或读取日志文件。 4. **过程自动化**:编写TCL脚本来执行一系列控制台命令,如安装、配置、启动服务等,减少手动操作。 ...

    tcl.rar_.tcl_tcl

    3. `file`系列命令:用于文件操作,如`file exists filename`检查文件是否存在,`file read`读取文件内容。 4. `foreach`:遍历集合,如`foreach item $list {puts $item}`。 5. `regsub`:正则表达式替换,如`...

    Tcl and the Tk Toolkit

    - **Expect**:一种用于自动化测试和配置任务的工具。 - **Extended Tcl (ET)**:增加了对浮点运算和异常处理的支持。 - **X File Access (XF)**:提供文件和目录操作的增强功能。 - **分布式编程**:通过诸如...

    shell结合expect写的批量scp脚本工具

    shell脚本读取列表文件,对每一行进行处理,提取出主机信息,并调用expect_scp脚本进行实际的SCP操作。 shell脚本示例中,`list_file`、`src_file`和`dest_file`分别表示列表文件、本地源文件路径和远程目标文件...

    使用脚本进行ssh登录服务器1

    这个脚本读取一个包含IP地址和密码的文件,然后对每一行(代表一个服务器)调用`noscp.exp`脚本来复制本地的`authorized_keys`文件到远程服务器的`.ssh`目录下,实现免密登录。`noscp.exp`是一个结合了`expect`的SCP...

    sexpect:需要Shell(sh,bash,zsh,ksh等)

    4. **自动化场景**:学会使用`sexpect`自动化SSH登录、软件安装、配置文件修改、系统监控等多种任务,可以极大地提升工作效率。 5. **错误处理和调试**:`sexpect`脚本可能会遇到各种预期外的情况,学习如何设置...

    Python module to Expect lib-开源

    例如,你可以使用它来自动登录到远程服务器、运行系统命令、管理配置文件等。Python版本的Expect库,即ExpectPy,保留了这种能力,并且利用Python的语法和功能,使得代码更易于理解和维护。 ExpectPy的核心功能...

Global site tag (gtag.js) - Google Analytics