CentOS6.3上搭建expect无交互开发环境
2017-05-24 18:19
381 查看
1.背景
在面向shell编程时对于需要交互的场合则必须通过人工来干预,而对于这种方式是违反无人职守的原则;现在expect就解决了这个问题,
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
Expect是在Tcl基础上创建起来的,用来做一些linux下无法做到交互的一些命令操作,在远程管 理方面发挥很大的作用。
spawn命令激活一个Unix程序来进行交互式的运行。
send命令向进程发送字符串。
expect 命令等待进程的某些字符串。
expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。
2.安装
在安装expect之前需要先安装TCL(最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。
这里使用的安装包:tcl8.4.20-src.tar.gz 和 expect5.45.tar.gz
tar zxvf tcl8.4.20-src.tar
cd tcl8.4.20
./configure --prefix=/usr/local/tcl --enable-shared
make
make install
TCL安装完毕,下面安装expect
tar zxvf expect5.45.tar.gz
cd expect5.45
./configure --prefix=/usr/local/expect
make
make install
expect到此就安装结束了,expect的安装目录在/usr/local/expect;但可执行文件却不在该目录下,我们可以使用find命令来查找,如:find / -name expect
一般情况下,expect与tcl在一起的,我的存放的地方在:/usr/local/tcl/bin/expect ;如果觉得这个路径太长或者不合,可以使用软链接到你想的位子上。
3.代码验证
ScpStart()
{
line=11.22.33.44 #IP地址
/usr/local/bin/expect << EOF
set time 20
spawn scp -r /opt/upProtocol/ptcBinPacket root@$line:/opt
expect {
"*yes/no*"
{ send "yes\r";exp_continue }
"*password:"
{ send "xxxxxx\r"}
}
expect eof
EOF
if [ $? -eq 0 ]
then
echo "复制文件到$line成功!"
else
echo "复制文件到$line失败!"
fi
}
在面向shell编程时对于需要交互的场合则必须通过人工来干预,而对于这种方式是违反无人职守的原则;现在expect就解决了这个问题,
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
Expect是在Tcl基础上创建起来的,用来做一些linux下无法做到交互的一些命令操作,在远程管 理方面发挥很大的作用。
spawn命令激活一个Unix程序来进行交互式的运行。
send命令向进程发送字符串。
expect 命令等待进程的某些字符串。
expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。
2.安装
在安装expect之前需要先安装TCL(最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。
这里使用的安装包:tcl8.4.20-src.tar.gz 和 expect5.45.tar.gz
tar zxvf tcl8.4.20-src.tar
cd tcl8.4.20
./configure --prefix=/usr/local/tcl --enable-shared
make
make install
TCL安装完毕,下面安装expect
tar zxvf expect5.45.tar.gz
cd expect5.45
./configure --prefix=/usr/local/expect
make
make install
expect到此就安装结束了,expect的安装目录在/usr/local/expect;但可执行文件却不在该目录下,我们可以使用find命令来查找,如:find / -name expect
一般情况下,expect与tcl在一起的,我的存放的地方在:/usr/local/tcl/bin/expect ;如果觉得这个路径太长或者不合,可以使用软链接到你想的位子上。
3.代码验证
ScpStart()
{
line=11.22.33.44 #IP地址
/usr/local/bin/expect << EOF
set time 20
spawn scp -r /opt/upProtocol/ptcBinPacket root@$line:/opt
expect {
"*yes/no*"
{ send "yes\r";exp_continue }
"*password:"
{ send "xxxxxx\r"}
}
expect eof
EOF
if [ $? -eq 0 ]
then
echo "复制文件到$line成功!"
else
echo "复制文件到$line失败!"
fi
}
相关文章推荐
- spark开发环境搭建(centos6.3)
- 在操作系统Centos 6.3 上使用Nexus 2.8搭建MAVEN私服 及 cloudstack 开发环境
- CentOS6.3+JDK7+Tomcat7.0+MySQL5.5 开发环境的搭建
- 在centos6.3_64bit 上的GO语言开发环境搭建
- CentOS6.3+JDK7+Tomcat7.0+MySQL5.5 开发环境的搭建
- 在CentOS 6.3 64bit上搭建python高性能框架gevent开发环境
- CentOS搭建python开发环境
- CentOS6.0搭建嵌入式开发环境
- GTK+开发环境搭建(Centos+Netbeans)
- CentOS+JDK+Tomcat+MySql&JDBCDriver 开发环境搭建实录
- vmware8.0下centos6.3 学习环境搭建
- Linux 下Android 开发环境搭建 ---CentOS
- 在虚拟机(CentOS)中搭建LAMP开发环境2--[安装Nginx]
- 项目组CentOS开发环境的搭建
- 用qemu搭建CentOS 6 for colinux虚拟系统——《Windows下搭建CentOS 6开发环境之一》
- 【Jetty Server 开发系列之一】搭建Jetty Server环境&&Http客户端实现交互
- 在CentOS下搭建Android 开发环境
- CentOS搭建python开发环境
- CentOS 下 web开发环境的搭建
- GTK+开发环境搭建(Centos+Netbeans)