我有一个脚本,我在其中输入scp
命令将文件备份到其他服务器。但当它运行时,它要求输入密码。有没有办法自动化这个?我使用的是 CentOS 5.6。我见过很少的指南,他们spawn
在我使用命令时使用命令,它说-bash: spawn: command not found
。
#!/usr/bin/expect -f
# connect via scp
spawn scp "[email protected]:/home/santhosh/file.dmp" /u01/dumps/file.dmp
#######################
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "PASSWORD\r"
}
}
interact
答案1
使用基于密钥的身份验证和空密码。这不会要求输入密码。
跟随这些脚步。
答案2
确保您已安装“Expect”。在使用“yum”的 Linux 发行版中,运行(以 root 身份):# yum install expect
然后通过键入以下内容确保脚本中的预期路径正确:$ which expect
/usr/bin/expect 返回的路径将放在脚本的开头 # !/usr/bin/expect -f
答案3
如果spawn无法正常工作,您需要检查您的预期安装。发送密码可以像这样自动化......
spawn scp "[email protected]:/home/santhosh/file.dmp" /u01/dumps/file.dmp
expect {
"assword:" {
send "MyPassword\r"
# you can send remote commands here..
}
"yes/no)?" {
send "yes\r"
sleep 2
exp_continue
}
timeout {
puts "\nError: timed out.\n"
exit
}
}