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ę.