Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : per shellscript ein programm mit parametern ausfuehren



hempi
27-10-2004, 19:40
Huhu
da ich noch ein ziemlicher anfaenger in sachen shell programmierung bin, habe ich gehofft, hier im forum ein paar hilfreiche tips zu bekommen.
ich habe einen pc, auf dem ich debian sarge installiert habe, diesen benutze ich als ded. Spieleserver fuer lanpartys.

Da laufend neue updates rauskommen und mein server rund um die uhr laeuft, ich aber zu faul bin, jedes mal von hand upzudaten, moechte ich ein shellscript schreiben, dass meinen ded. server updatet.
dieses script moechte ich per cronjob jeden tag zu einer bestimmten uhrzeit ablaufen lassen. das script sollte nicht als root ausfuehrbar sein, sondern unter dem benutzer #server# laufen.

das Programm das ausgefuehrt wird, liegt im Ordner /home/server/halflife/hlds_l
und heisst steam und der befehl zum updaten lautet:

./steam -command update -game cstrike -dir /home/server/halflife/hlds_l

kann mir bitte einer weiterhelfen? Waere echt super klasse, ich denke das dies nicht die schwierigste aufgabe sein sollte.

Wichtig:
Ich moechte nicht, dass mir irgendjemand das script schreibt!! Ich moechte es selbst versuchen, denn nur wer versucht wird auch was lernen! Jemand der alles vorgekaut bekommt, lernt nichts! Ich bitte nur um codeschnipsel bzw anhaltspunkte wie ich vorgehen soll.

Ich habe ewig bei google gesucht und nichts brauchbares gefunden. Vielleicht such ich nicht richtig. Wie wird das oeffnen bzw ausfuehren von ausfuehrbaren programmen mit parametern per shellscript genannt?

Waere nett, wenn sich jemand meldet!!

mfg hempi

RapidMax
27-10-2004, 20:01
Am besten du erstellst einen crontab-Eintrag für den Benutzer der den Update durchführen soll. Dazu loggst du dich als diesen Benutzer ein (su - Benutzer) und setzt die Umgebungsvariable EDIT auf deinen Lieblingseditor:
export EDIT=/usr/bin/vim
Danach kannst du mit "crontab -e" die benutzereigene Crontab editieren (man 5 crontab).

Prinzipiell ist gar kein Shellscript notwendig: du kannst den Befehl zum update direkt in die Crontab schreiben: test -x /home/server/halflife/hlds_l/update && /home/server/halflife/hlds_l/update -command ....
Wenn mehr als ein Befehl notwendig ist, schreibst du ein Shellscript dafür und rufst dieses in der crontab auf: test -x /home/server/hlupdate && /home/server/hlupdate

Das test -x sorgt dafür, dass der hinter dem && aufgeführte Befehl nur ausgeführt wird, wenn das Script existiert und ausführbar ist. Damit vermeidest du Fehler-Meldungs-Emails, falls das Script mal nicht dort liegt wo es soll.

Wie du Shell-scripts erstellst solltest du in diverses Online-Dokumentationen finden. z.B. selflinux.

Gruss, Andy

hempi
29-10-2004, 17:16
Super Danke fuer deine hilfe!!! :D