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