期望程序从文件发送命令

时间:2012-12-26 14:05:53

标签: linux unix expect

如何使“expect”程序的发送命令从文件中读取并使用每一行作为参数。

我想在expect程序中使用类似循环的结构,如下所示(注意: - while循环是虚构的。)

spawn /my/program

expect {
 -re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: { 
             while read_line in FILE; 
             do 
                 send $read-line; 
             done 
}

如何使用“expect”

编程while循环部分等效项

1 个答案:

答案 0 :(得分:4)

请注意,在您的问题中,您错过了一个大括号,并且您错误输入了变量名称(read_lineread-line

Expect是一个Tcl扩展程序,因此您可以使用所有Tcl commands

spawn /my/program
expect { 
    -re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: { 
        set fh [open FILE r]
        while {[gets $fh read_line] != -1} {
            send "$read_line\r"
        } 
        close $fh
    }
}

如果您安装tcllib,则可以

package require fileutil
spawn /my/program
expect { 
    -re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: { 
        fileutil::foreachLine read_line FILE {
            send "$read_line\r"
        } 
    }
}