前不久进行异地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的了解还是需要在网上自己找些资料的,他也支持函数、条件语句、循环语句的,功能蛮强大的.