Проверка ключа S SH на github не работает в crontab - PullRequest
0 голосов
/ 09 апреля 2020

Я хотел обновить мой репо через некоторое время, поэтому я написал для этого сценарий оболочки. Я также загрузил ключ S SH в GitHub, чтобы он не требовал ввода пароля и имени пользователя при выполнении git pu sh. Сценарий, кажется, работает нормально вручную, но при запуске через crontab он не работает. Позже, когда я изменил свой скрипт, например

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

Это работает в crontab. Может кто-нибудь сказать, почему мой скрипт не работает в первом случае? Вот мой маленький код, который я использую в первом случае.

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

1 Ответ

1 голос
/ 09 апреля 2020

Убедитесь, что вы работаете, вы запускаете скрипт из 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 
...