Python - uruchomienie skryptu w bashu

Potrzebujesz pomocy z C, C++, perl, python, itp.
czakll
Posty: 90
Rejestracja: 22 listopada 2008, 18:57

Python - uruchomienie skryptu w bashu

Post 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.
0x11
Posty: 17
Rejestracja: 02 marca 2009, 11:00

Post autor: 0x11 »

Wykorzystaj funkcje systemowe.
beel
Beginner
Posty: 340
Rejestracja: 28 marca 2007, 07:06

Post 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.
czakll
Posty: 90
Rejestracja: 22 listopada 2008, 18:57

Post 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
beel
Beginner
Posty: 340
Rejestracja: 28 marca 2007, 07:06

Post 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..
czakll
Posty: 90
Rejestracja: 22 listopada 2008, 18:57

Post 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 :-|
beel
Beginner
Posty: 340
Rejestracja: 28 marca 2007, 07:06

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