最近写了一个自动上传日志文件的脚本放在项目现场设备中,使用免密码的scp上传日志到服务器,该设备的ssh是基于dropbear实现。脚本放到设备中测试,发现在在命令行模式下启动脚本,可以自动上传日志,但把脚本设置成开机自启动后,scp却无法运行。查阅日志发现在自启动脚本中scp执行时,报“Host 'host-ip' is not in the trusted hosts file.”。
该问题困扰了我好久,尝试了各种方法都无效。最后在这个网页下找到了答案:
https://www.linksysinfo.org/index.php?threads/scp-wont-run-in-startup-script.68197/
原来dropbear默认的home目录是 /. ,但实际上是 /root,所以需要设置 $HOME 环境变量。在脚本的scp指令前面加上:
export HOME=/root
同时,将服务器端的host_rsa_key 加到 /root/.ssh 路径下的 known_hosts 中(注意是 /root/.ssh/ 路径下,不是 /.ssh/路径下)。
reboot重启设备,发现脚本中的scp可正常执行了,日志可自动上传啦!