用expect在脚本中自动输入密码

今天遇到一个小问题,我在用scp同步证书文件 到别一台服务器时,要输入私钥的密码,gpt4帮我写了以下脚本 ,注意要用expect执行并不是sh.

加入cron时要这样写  0 3 * * * expect /root/auto/cp-cert.sh > /dev/null

#!/usr/bin/expect -f

# 设置本地目录路径
set source_dir "/www/server/panel/vhost/cert/QQ.com"

# 设置目标主机和目标路径
set target_user "root"
set target_host "QQ.com"
set target_path "/etc/nginx/cert"

# 设置要输入的密码
set password "123456"

# 设置超时时间为无限
set timeout -1

# 执行 SCP 命令
spawn scp -r $source_dir $target_user@$target_host:$target_path

# 等待输入密码提示
expect "Enter passphrase for key"

# 发送密码
send -- "$password\r"

# 等待 SCP 命令执行完成
expect eof

 

版权声明:
作者:xiaoniba
链接:https://blog.xiaoniba.com/2024/02/05/19564/
来源:小泥吧的博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>