在linux机器下开发程序,经常需要从编译服务器A传文件至运行服务器B,通过SCP命令传输时需要显式手动输入密码,单个文件还好,如果多个时就会发现比较繁琐且效率低下,免密码方式可以通过SSH密码共享与except命令来实现,接下来讲讲except命令使用。
查询安装except命令
rpm -qa|grep expect*
如果出现查询结果则己安装,否则未安装。
安装except
http://rpmfind.net/linux/rpm2html/search.php?query=expect
编写自动运行脚本
#!/bin/sh
pwd="123456"
/usr/bin/expect <<-EOF
spawn scp hss root@10.10.107.197:/usr/local/bin/ee
expect "*password:"
send "$pwd\r"
spawn scp ../lib/libdataengine.so root@10.10.107.197:/usr/local/lib
expect "*password:"
send "$pwd\r"
spawn scp ../lib/libtrillium.so root@10.10.107.197:/usr/local/lib
expect "*password:"
send "$pwd\r"
expect eof
EOF
如果需要传输多个文件可以写在一块儿,非常方便。
shell中遇到<<符号时,会自动将下一个词(这里是EOF)当作一个分界词,直到碰到第二个同样分界词时结束,且把其中的内容整体作为前面命令的输入。
spawn是进入了except环境后的内部命令。