Git pull с использованием скрипта Python - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь написать функцию обновления для удаленной малины, к которой я не буду обращаться. Это означает, что у меня есть веб-сервер, который отправляет команды на почтовые запросы. Когда я хочу внести изменения в код малины, я отправляю ему «update» в ответ малине с просьбой «nextInstruction».

Теперь я хочу, чтобы малина чистилась и мерзко дергалась.

мои общие сообщения.py:

#code beforhand
elif (decodedresponse['responseInfo']['data'][1]['command'] == "update"):

        subprocess.call("./update.sh", shell=True)

        #update
        #os.system('sudo git clean -f -d')
        #os.system('git pull')
        #os.system('sudo reboot')
#code after

мое обновление.sh:

#!/bin/bash

sudo git clean -f -d
git pull
sudo reboot

Проблема: Если я выполняю update.sh напрямую, это работает. Когда я запускаю скрипт на python, он не получает ключи ssh в ~ / .ssh.

Как я могу прикрепить ключ ssh к моему скрипту python? Я вообще понимаю проблему? Есть ли более простое решение для входа в мое удаленное хранилище gitlab?

1 Ответ

0 голосов
/ 28 августа 2018

Я бы предпочел, чтобы мой bash-скрипт запускал скрипт python и определял действие / задание по коду выхода pythons. Вот пример.

Примечание : для вызова sudo может потребоваться ввести пароль, если только вы не отредактировали файл sudoers (visudo) и не добавили исключение для этого пользователя, выполняющего скрипт и git.

p.py (убедитесь, что в файле py есть shebang (первая строка) и chmod +x attrib set.

#!/usr/bin/python
# instead of  >>subprocess.call("./update.sh", shell=True)
exit(100)

update.sh

#!/usr/bin/bash

$(./p.py)
JOB=$?  # get pythons exitcode here

if [ $JOB -eq 100 ]; then
    echo "update"
elif [ $JOB -eq 50 ]; then
    echo "delete";
else
    echo "nothing"
fi
...