我想使用脚本将文件从一台服务器发送到另一台服务器。我有密码,但如何将密码传递给脚本。我使用的是 Solaris 5.10
答案1
不建议在脚本中使用密码。相反,您可以使用 ssh 密钥允许无需密码即可登录。
在运行脚本的机器上,运行ssh-keygen
以生成密钥文件。您可以对所有问题按回车键,默认设置即可正常工作。获得密钥文件后,您可以使用 .key 文件将其复制到其他服务器ssh-copy-id other.server
。这将正确安装文件,以便您可以登录。ssh-copy-id
将要求输入密码。如果您现在尝试连接ssh
或scp
连接到其他服务器,它应该不再需要密码。
如果您仍然觉得在脚本中输入密码是唯一的选择(事实并非如此,您也不应该这样做),您可以编写一个脚本来在提示输入expect
密码时输入密码。ssh
scp
答案2
您可以使用这个期望脚本
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
#Source File Path
set source [lindex $argv 3]
#Destination Path
set dest [lindex $argv 4]
spawn bash -c "scp $source $user@$ip:$dest"
expect "password:"
send "$password\r"
interact