http://www.jb51.net/article/62349.htm
如scp时不输入密码
先yum install tcl expect -y
测试脚本
我们写一个简单的脚本实现scp拷贝文件,在脚本里配置密码,保存为scp.exp如下
复制代码代码如下:
#!/usr/bin/expect
set timeout 20
if { [llength $argv] < 2} {
puts "Usage:"
puts "$argv0 local_file remote_path"
exit 1
}
set local_file [lindex $argv 0]
set remote_path [lindex $argv 1]
set passwd your_passwd
set passwderror 0
spawn scp $local_file $remote_path
expect {
"*assword:*" {
if { $passwderror == 1 } {
puts "passwd is error"
exit 2
}
set timeout 1000
set passwderror 1
send "$passwd\r"
exp_continue
}
"*es/no)?*" {
send "yes\r"
exp_continue
}
timeout {
puts "connect is timeout"
exit 3
}
}
注意,第一行很重要,通常我们的脚本里第一行是#!/bin/bash,而这里是你机器上expect程序的路径,说明这段脚本是由expect来解释执行的,而不是由bash解释执行,所以代码的语法和shell脚本也是不一样的,其中set passwd your_passwd设置成你自己的密码,然后执行如下命令
复制代码代码如下:
./scp.exp ./local_file user@host:/xx/yy/
执行前确保scp.exp有执行权限,chmod +x scp.exp
参数解释可查看:http://blog.csdn.net/lufeisan/article/details/53488395