mam najbardziej prosty skrypt o nazwie update.sh
Uruchom skrypt z pytona z uprawnieniami
#!/bin/sh
cd /home/pi/circulation_of_circuits
git pull
Kiedy nazywają to z terminala z ./update.sh
dostaję Już up-to-date lub aktualizuje pliki jak oczekiwano.
Mam też skrypt Pythona, że wewnątrz jest skrypcie:
subprocess.call(['./update.sh'])
Kiedy który wywołuje ten sam skrypt uzyskać:
Permission denied (PublicKey). fatal: Nie można odczytać z zdalnego repozytorium.
Upewnij się, że masz prawidłowe prawa dostępu i istnieje repozytorium.
(Używam SSH).
----------------- zmiana --------------------
Ktoś miał szukaj mnie:
OK, więc trochę postępu. Kiedy uruchamiam twój obraz, nie mogę uruchomić git w katalogu twojego katalogu repo, a skrypt bash również zawiedzie. Wydaje się być , ponieważ repozytorium bitbucket jest prywatne i wymaga uwierzytelnienia dla pull (ten, którego używałem był publiczny, dlatego nie miałem problemów z ). Przypuszczalnie git pamięta o tym po wpisaniu go w pierwszym momencie czasu, bash jakoś sztuczki gita w myślenie, że piszesz później polecenie , ale uruchomienie go z Pythona nie jest takie samo.
Nie jestem ekspertem od gitów, ale musi być jakiś sposób ustawienia tego, aby pyton mógł dostarczyć uwierzytelnienia.
Czy to rozwiązać problem (przechodzącego na flagę 'shell = TRUE): http://stackoverflow.com/a/325474/608259 – kalaracey
Nie, w przypadku, gdy liczy nazwałem go tak' cmd = [ '/home/pi/circulation_of_circuits/update.sh'] \t \t proces = subprocess.Popen (cMD, powłoki = True stdout = subprocess.PIPE) \t \t process.wait() ' – clankill3r
W przypadku, gdy ktoś dziwi, 'os.geteuid()' daje 0, więc powinno być dobre. – clankill3r