前不久因为进行异地copy数据,就想到了scp,但是这个东西需要手动去输入密码,不能放到后台去执行,于是就考虑有没有办法让他自动输入密码呢,最终发现了expect这个东西,很强大的东西,所以我就在本地测试了下,最终实现了不用手动输入密码也可以进行COPY数据,拿来与大家分享.
要使用expect需要预先安装tcl这个东西,然后再安装expect包.我这里使用的是tcl8.4.11-src.tar.gz和expect-5.43.0.tar.gz的安装包.
1.安装tcl和expect
#tar zxvf tcl8.4.11-src.tar.gz
#cd tcl8.4.11/unix
#./configure && make && make install
#cp tclUnixPort.h ../generic/
#tar zxvf expect-5.43.0.tar.gz
#cd expect-5.43/
#./configure --with-tcl=/usr/local/lib/ --with-tclinclude=\
/home/nagios/tcl8.4.11/generic/ --with-x=no
#make && make install
OK,tcl以及expect已经安装完成了.下面给出scp的一个expect很简单的一个脚本
#!/usr/local/bin/expect
spawn scp /home/nagios/tuning-primer.sh nagios@192.168.100.104:/home/nagios/ expect "Password:" exec sleep 2 send "nagios&*(\n" interact
|
就这么一个简单的脚本,就可以实现了自动输入密码的功能,大家对expect的了解还是需要在网上自己找些资料的,他也支持函数、条件语句、循环语句的,功能蛮强大的.
阅读(1348) | 评论(0) | 转发(0) |