【问题标题】:SSH key validation on github does not works in crontabgithub 上的 SSH 密钥验证在 crontab 中不起作用
【发布时间】:2020-07-21 10:24:56
【问题描述】:

我想在一段时间后自动更新我的 repo,所以我写了一个 shell 脚本来做到这一点。 我还向 GitHub 上传了一个 SSH 密钥,以便在执行 git push 时不需要密码和用户名。 该脚本似乎可以手动运行,但是通过 crontab 运行时它不起作用。 后来当我改变我的脚本时,就像

git push 'https://username:password@github.com/username/repo/' 

这适用于 crontab 有人可以告诉我为什么我的脚本在第一种情况下不起作用 这是我在第一种情况下使用的小代码。

#!/bin/sh
cd /root/repo
git add * 
git commit . -m "Check" 
git push 

【问题讨论】:

    标签: git github ssh cron


    【解决方案1】:

    确保您正在运行您正在以用户身份从 crontab 运行脚本,而您不是任何其他用户(例如 root)。 此外,您的路径可能会有所不同,因为您手动运行脚本的环境和 crontab 工作的环境不同。

    所以最好将 $PATH 变量复制到脚本顶部,例如

    echo $PATH
    

    输出的内容例如"/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/mysql/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:~/usr/lib/jvm/jdk-6/bin"export 它在你的脚本之上,还有 export shell 作为 sh

    #!/bin/sh
    export PATH="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/mysql/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:~/usr/lib/jvm/jdk-6/bin"
    export SHELL=/bin/sh
    cd /root/repo
    git add * 
    git commit . -m "Check" 
    git push 
    

    【讨论】:

    • 我在 cron 文件中有路径变量,我正在使用 sudo /path/script 运行脚本。我在我的机器上是 sudo
    猜你喜欢
    • 2022-01-19
    • 2018-03-17
    • 2016-01-19
    • 2014-09-11
    • 2020-11-06
    • 2022-01-28
    • 2023-03-13
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多