我想构建一个每天运行的 shell 脚本并使用 SCP 命令从另一台服务器获取文件。
问题是,当我在终端输入此命令时,它会要求我输入密码。
a) shell脚本如何输入密码?
b) 将密码存储在 shell 脚本中真的是个好主意吗?
命令示例:
scp -r myUser@myServer:/local/java/log/archive/2018/02/16/log.2018-02-16.gz ~/Temp/
答案1
第一步:设置无密码 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 任务。