微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在bash中,如何input后台进程命令的密码?

我试图做一个从Dreamhost的rsync备份到另一台主机,这里是我想要使用的命令:

nohup rsync -e“/ usr / bin / ssh”–bwlimit = 2000 -av [email protected]:remote_directory local_directory&

我希望过程继续在后台运行,甚至当我断开连接。 问题是,我不知道如何在后台进程中input密码。 我该怎么做呢?

猫通过subprocess.Popen()调用时阻塞

正则expression式匹配IP地址,但忽略本地主机

使用Shell脚本recursion移除Linux中的所有备份文件

bash粘贴不保留换行符

crontab的行为差异为MysqL

编写一个运行命令并logging退出代码的封装函数的最好方法是什么?

pipe理由cron作业创build的日志文件

recursion地查找具有特定扩展名的文件

使用AWK输出的Linux CP

Windows + Cygwin +单行If Else + Puppet

通常这是通过不需要密码来完成的。 相反,请考虑配置SSH以使用公钥。 网上有几个资源(比如这个来自dreamhost的资源 )可以帮助你做到这一点。

我会用一把钥匙。 如果您需要使用密码保护密钥,或者出于某种原因无法使用密钥,请使用expect来传递密码

rsync_auto.sh:

#/bin/bash expect <<<EOF spawn nohup rsync -e "/usr/bin/ssh" --bwlimit=2000 -av [email protected]:remote_directory expect "password:" send "your_passwordr" expect eof EOF

!!!确保没有人可以访问该文件!!!

chmod 500 rsync_auto.sh

更详细一点的方法可能是将密码存储在密钥环应用程序中,例如gnome-keyring,而不是将它们存储在普通文件中。 如果您有兴趣,我找到了这篇文章

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐