如何自动输入 SCP 或 SFTP 的密码以实现自动化?

如何自动输入 SCP 或 SFTP 的密码以实现自动化?

我有一个脚本,我在其中输入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
}
}

相关内容