expect

1860阅读 0评论2015-04-17 silencefalls
分类:LINUX

expect

expect 是一种脚本语言,用于编程者与文本界面下交互式程序交互。expect 使用的是 ,但是 expect 支持一些自己的特殊命令用于实现交互过程。在 debian 的包里,有如下的一些文件:
/usr/bin/expect
/usr/lib/expect5.43/pkgIndex.tcl
/usr/lib/expect5.43/libexpect5.43.a
/usr/lib/libexpect.so.5.43.0
/usr/share/doc/expect/changelog.gz
/usr/share/doc/expect/FAQ.gz
/usr/share/doc/expect/ChangeLog.gz
/usr/share/doc/expect/changelog.Debian.gz
/usr/share/doc/expect/README.gz
/usr/share/doc/expect/copyright
/usr/share/doc/expect/NEWS.gz
/usr/share/man/man1/expect.1.gz
/usr/share/man/man3/libexpect.3.gz
/usr/share/lintian/overrides/expect
/usr/lib/libexpect.so.5
/usr/lib/libexpect.so.5.43
这包括了解释器 expect,也提供了 C/C++ 程序接口库 libexpect.so。

expect 执行的基本方式是,通过自身激活需要交互的程序,并控制该程序的输入输出,这样可以选择通过 expect 脚本与该程序交互(通过分析程序输出内容产生合适的输入),也可以在合适的时候释放对该程序输入输出的控制。因此 expect 本身提供不同于 tcl 的部分主要是在处理这部分功能上。我们会在后面的文章中对 tcl 语言进行简单的介绍,这里仅仅介绍一些 expect 特有的命令:
需要使用 C 程序接口可以用 libexpect。

下面是一个建立 ssh tunnel 的简单例子:
#!/usr/bin/expect -f

while {1} {
spawn ssh host -R 52028:127.0.0.1:22 -N
wait
sleep 60
}
上一篇:vim g s 替换区别
下一篇:高效率编辑器 VIM-操作篇