expect安装和使用需要注意的几个问题(转)

从远程服务器拷贝数据文件到指定的服务器上,估计是需要同学都遇到过的问题。scp 和rsync 都可以实现,rsync俺还没玩过,不过应该也比较简单吧。如果用scp来实现自动拷贝文件,但是需要用户来输入的密码,否则无法实现,怎么办?听说expect可以解决这个问题。

1。首先确认expect的包是否安装。

[root@lamp100 opt]$ rpm -qa | grep expect

如果没有则需要下载安装,可以参考:

编译安装:http://www.lamp100.com/333

rpm安装:expect-5.42.1-1.x86_64.rpm 和 expect-devel-5.42.1-1.x86_64.rpm 这个安装相对简单些

rpm下载地址:

http://mirrors.163.com/centos/5/os/i386/CentOS/

http://mirrors.163.com/centos/5/os/x86_64/CentOS/

安装过后会显示:

[root@lamp100 opt]$ rpm -qa | grep expect

expect-5.43.0-5.1
expect-devel-5.42.1-1

2.查看expect的路径,可以用

[root@lamp100 opt]$ which expect

/usr/bin/expect

[root@lamp100 opt]$ vim auto_cp_data.sh

3。确定脚本有可执行权限

chmod +x auto_cp_data.sh

1#!/usr/bin/expect  //这个expect的路径就是用which expect 查看的结果
2 
3set date [exec date "+%y_%m_%d"]
4 
5spawn scp root@10.3.32.57:/opt/htdocs/search_data/"$date"_raw_food.xml /opt/sourcedata/
6 
7expect "password:"  //匹配password
8 
9send "123456\r" //发送密码
10 
11interact  //执行完毕

另外需要注意的是:

不能按照习惯来用sh auto_cp_data.sh来这行expect的程序,会提示找不到命令,如下:

auto_cp_data.sh: line 3: spawn: command not found
couldn’t read file “password:”: no such file or directory
auto_cp_data.sh: line 5: send: command not found
auto_cp_data.sh: line 6: interact: command not found

因为expect用的不是bash所以会报错。执行的时候直接./auto_cp_data.sh就可以了。~切记!

参考链接:http://blog.csdn.net/zhuying_linux/article/details/6657020

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值