zacharias
Goto Top

Rc.local - Script führt commands nicht aus

Hi,

Vor kurzem habe ich smstools auf meinem HomeServer (Ubuntu 9.10 Server Edition) installiert. Somit
kann ich auf meinem Server auch SMs empfangen (Huawei E180). Das ganze funktioniert nun auch
schon relativ problemlos.

Allerdings würde ich gerne den HomeServer via SM-Commandos steuern können. Da ich noch keine
bestimmte Idee verfolge würde mir Anfangs ein simpler Reboot des Server ausreichen. Hier gibt es natürlich
schon die ersten Probleme

WAS wurde bisher realisiert? (und WIE?)

1. smstools wurde erfolgreich installiert & konfiguriert
2. smstools speichert nun die empfangenen SMs in [ /Storage/Other/SMS/Inbox ]
2. Mit Hilfe von inotify überwache ich dieses Verzeichnis:

while { inotifywait -qq -e create /Storage/Other/SMS/Inbox; }; do

  MyCommand=$(sed '1,11d' /Storage/Other/SMS/Inbox/*)

  if [ $MyCommand == "reboot" ]; then MEINBEFEHL; fi

  rm /Storage/Other/SMS/Inbox/*

done


Das Script macht also nichts anderes, als darauf zu warten, dass eine Datei innerhalb des Verzeichnisses
[ /Storage/Other/SMS/Inbox ] erstellt wird. Danach kopiert es die für mich wichtige Information in die
Variable MyCommand, welche ich danach prüfe und dementsprechend reagieren kann.
Zudem wird der Inhalt von Inbox komplett gelöscht.

Wenn ich das Script manuell starte funktioniert es eigentlich wunderbar. Da das Script allerdings die ganze
Zeit laufen soll habe ich es in die rc.local Datei geschrieben damit es beim Systemstart ausgeführt wird.

Wenn es aber über die rc.local gestartet wird, funktioniert es nur teilweise. D.h. wenn ich dann eine SM
erhalte, wird diese zwar durch das Script gelöscht, aber die Commands (MEINBEFEHL) wird nicht ausgeführt.

Bsp:

  if [ $MyCommand == "reboot" ]; then reboot now; fi                             // ... Reboot wird nicht durchgeführt //

  if [ $MyCommand == "reboot" ]; then echo $USER > /Storage/Other/SMS/test.txt; fi                // ... $USER wird nicht in die Datei geschrieben //

Wie gesagt funktionieren die beiden Commands, wenn ich das Script manuell via ./meinscript.sh starte.

Hab auch schon viel herumgegoogelt, aber ich komme irgendwie zu keiner Lösung. Leider bin ich auch erst seit kurzem
Linux-Anhänger und bin noch nicht so fit auf dem System.

Die Idee dahinter habe ich hoffentlich klar rüberbringen können und ich wäre dankbar für jede Art von Hilfe.

LG
zacharias

Content-ID: 138976

Url: https://administrator.de/contentid/138976

Ausgedruckt am: 08.11.2024 um 18:11 Uhr

zacharias
zacharias 02.04.2010 um 06:45:28 Uhr
Goto Top
Hi,

Konnte das Problem endlich lösen:

Zuerst habe ich schon mit dem Gedanken gespielt, dass ich mir eigens einen Daemon
programmiere der mir die oben gewünschte Funktionalität bietet. Aber da wäre ich wohl
mit der Kirche um's Kreuz gelaufen.

Wie es bei Linux üblich ist, gibt es für jede Problematik bereits eine Lösung. Es liegt halt
nur daran diese zu finden face-smile.

Das Tool iwatch erfüllt genau meinen Zweck. Man kann es
über eine XML-File konfigurieren und angeben welche Verzeichnisse überwacht werden
sollen. Zudem kann man auch die Events angeben (CREATE, ACCESS, ...) und man kann
einen Command hinterlegen.

Da iwatch einen eigenen Switch hat um im Daemon-Modus zu starten funktioniert das jetzt
wunderbar. Einfach "iwatch -d -f <pathtoconfigfile>" in die RC.LOCAL und jetzt funktionierts.


LG
zacharias