Strona 1 z 1
Python - uruchomienie skryptu w bashu
: 04 marca 2009, 11:40
autor: czakll
Witam. Ostatnio wpadłem na pomysł na napisanie kontroli serwera z poziomu GG. Mam już skrypt do EKG, tylko teraz mam problem.
Mianowicie nie wiem zupełnie jakby uruchomić skrypt w bashu z poziomu pythona. Wie może ktoś coś na ten temat? Pozdrawiam.
: 04 marca 2009, 11:48
autor: 0x11
Wykorzystaj funkcje systemowe.
: 04 marca 2009, 12:27
autor: beel
Kod: Zaznacz cały
import subprocess
try:
retcode = subprocess.call("/sciezka/do/skryptu" + "ewentualnie argumenty", shell=True)
except OSError, e:
print >>subprocess.sys.stderr, "Błąd wykonania:", e
PS. Jak skończysz chętnie zobaczę efekt.
: 10 marca 2009, 19:28
autor: czakll
File "/root/.gg/scripts/hltv.py", line 15 ƒ
retcode = subprocess.call("sh /root/start.sh", shell=True)
IndentationError: unindent does not match any outer indentation level
Coś mi nie idzie :/ Od razu mówię, że nie znam pythona, powoli się go uczę, ale z przykładów najlepiej idzie mi nauka

Wie ktoś co może być nie tak? Pozdrawiam
: 10 marca 2009, 19:48
autor: beel
Posprawdzaj dokładnie wcięcia w kodzie, spacje i inne białe znaki. Coś najprawdopodobniej się nie zgadza. Albo wrzuć więcej kodu, który uruchamiasz..
: 13 marca 2009, 17:23
autor: czakll
Kod: Zaznacz cały
def odpal():
try:
subprocess.call("sh /root/serw/start.sh", shell=True)
except OSError, e:
ekg.printf(subprocess.sys.stderr, "Błąd wykonania:", e)
return 1
Mniej więcej w tym miejscu coś się nie zgadza :-|
: 13 marca 2009, 18:36
autor: beel
Tak jak mówiłem, pilnuj wcięć! W Pythonie jest to bardzo istotne, nie otwierasz i nie zamykasz jawnie za pomocą jakiegoś znaku np. '{' i '}' konkretnej sekcji, czy to klasy, czy funkcji.
Poprawnie jest tak:
Kod: Zaznacz cały
def odpal():
try:
subprocess.call("sh /root/serw/start.sh", shell=True)
except OSError, e:
ekg.printf(subprocess.sys.stderr, "Blad wykonania:", e)
'return 1' pominąłem, bo nie wiem do czego chcesz to stosować.. i jaką miałoby pełnić rolę.