使用 SCP 获取文件的 Shell 脚本

Sol*_*olo 0 command-line

我想构建一个每天运行的 shell 脚本,并使用 SCP 命令从另一台服务器获取文件。

问题是,当我在终端中输入此命令时,它会要求我输入密码。

a) shells 脚本如何输入密码?

b) 将密码存储在 shell 脚本中真的是个好主意吗?

命令示例:

scp -r myUser@myServer:/local/java/log/archive/2018/02/16/log.2018-02-16.gz ~/Temp/
Run Code Online (Sandbox Code Playgroud)

Sim*_*hin 5

第一步:设置无密码 SSH 访问(通过 ssh-keygen):

运行ssh-keygen(你最终得到 2 个文件:id_rsa 和 id_rsa.pub,一个是你的 .pub 公钥与世界分享,另一个是你的私钥)。然后运行ssh-copy-id myUser@myServer。只需在出现提示时输入您的密码,您现在就可以通过 SSH 连接,而无需为 myUser@myServer 输入您的密码。

第二步:自动每日 scp :

输入crontab -e,选择您最喜欢的编辑器并在文件底部添加一行:0 0 * * * scp -r myUser@myServer:/local/java/log/archive/2018/02/16/log.2018-02-16.gz ~/Temp/保存并... 瞧!(您可以使用@daily scp (...)crontab 条目,它基本上与 0 0 * * * 相同)

请参阅 Anacron(使用 crontab 进行作业调度,在此期间计算机关闭时会发生什么?)以在计算机关闭时管理 Cron 任务。