我正在尝试创建一个.sh文件,这个文件偶尔会运行一个cron作业,从而实现一个自动rsync。到目前为止,我的文件是这样的:
#!/bin/bash
subdir=`hostname`
rsync -ah -e 'ssh -p 48180' /home/user/test
user@10.3.10.110:/var/www/html/xgplayer/events/"$subdir" -y
这是一个命令,必须把它切成两半,因为它对一行来说太长了。
我已将其设置为创建一个基于计算机主机名的子目录(请告诉我,如果这看起来也不错,我是根据用于稍微不同的目的使用的off代码),用户可以访问该子目录。(我刚刚打电话给用户是因为一些原因,忽略它)
我的问题是,-y会让它自动同意存储ssh密钥吗?此外,当它试图以用户身份登录以rsync的身份登录时,如何通过我试图在ssh中执行的命令自动输入密码?我以为会有这样的事情.可以做到。如能提供任何帮助,将不胜感激:)
我正在这两台机器上运行UbuntuServer16.04LTS,如果这有帮助的话。
编辑:不是超级棘手,但无论解决方案是什么,也必须能够被放入一个.sh文件,并运行自己没有用户的输入,这是一个非常具体的任务,对不起。
编辑2:按照帮助我的人的请求来做这件事,因此,我很遗憾不能提供屏幕截图,但是每当我运行我列出的rsync命令,以及每当我在一个新客户机上运行ssh-keygen试图在该机器上为该用户生成一个密钥时,它都会在10.3.10.110上为用户提供一个密码。我试图使用的应用程序需要完全自动化,这就是为什么这是一个问题。
编辑2.5:一旦我运行keygen和ssh-copy,它就不再提示在rsync输入密码,但是这将在许多机器上实现,对于这个项目,我不介意将这些输入放在某种安装.sh文件中,但是这些命令需要自动输入才能用于我的特定情况。
编辑3:我评论了很多,因为我没有足够的代表直接与试图帮助我的人聊天,这个网站还是新手。
发布于 2018-06-08 12:53:59
我找到了我自己的答案,对它做了更深入的研究,我会把这个问题的答案和几个有用的链接一起发布,这些链接帮助我了解到了这一点:
#!/bin/bash
subdir=`hostname`
rsync -ah -e 'sshpass -p "password" ssh -p 48180 -o
StrictHostKeyChecking=no' /var/www/html/xgplayer/events
user@10.3.10.110:/var/www/html/xgplayer/events/"$subdir"
这个Rsync命令都是一个命令。有助于下列方面的联系:
https://unix.stackexchange.com/questions/33271/how-to-avoid-ssh-asking-permission https://unix.stackexchange.com/questions/111526/rsync-without-prompt-for-password (第二个高投票率的答案最终比“最佳”答案更有帮助)
而且,很明显,在需要的地方,可以与用户和密码交换用户和密码,而不是在这里明显地发布它们。
感谢每一个试图帮助我的人,你们确实帮助我朝着正确的方向前进!)
发布于 2018-06-08 08:44:46
使用选项:--password-file=rsync_pass
rsync -ah -e 'ssh -p 48180' --password-file=rsync_pass /home/user/test user@10.3.10.110:/var/www/html/xgplayer/events/"$subdir" -y
文件rsync_pass
包含用户密码。
https://askubuntu.com/questions/1044516
复制相似问题