Samba Server - Check ob Clients Online

Wuschl

Vice Admiral Special
Mitglied seit
11.11.2001
Beiträge
963
Renomée
1
Standort
Himberg/Wien
Hallo alle!

Ich möchte meinem Server (Samba) ein Script verpassen das in periodischen Abständen überprüft ob mindestens ein Client verbunden ist und wenn nicht, herunterfährt. Nur kommt mir keine Idee wie ich das verwirklichen kann. Ping ist wohl nicht das richtige Programm dafür.... Kann man das mit Smbstatus oder einem anderen Programm realisieren?

Gruß Wuschl
 
DESCRIPTION

This tool is part of the samba(7) suite.

smbstatus is a very simple program to list the current Samba connections.

Was stünde dem im Weg?
 
Das mir eine Idee fehlt wie ich die Bash dazu bewege, smbstatus auszulesen. Ähnliche ratlosigkeit errscht bei mir unter Zuhilfenahme von "Ping"; also quasi wenn keine Antwort von 192.168.xy kommt dann init 0.

Nun wie gesagt, mir kommt nur keine Idee die Infos der entsprechenden Programme auszulesen *noahnung*

Gruß Wuschl
 
warum zur hölle denn bash? sh reicht doch vollkommen aus.

guck dir doch unter bestimmten umständen den exit-status von smbstatus an... hab gerade kein zur hand weil ich kein smb zu haus hab.
 
Danke für die Antwort. Weiß zwar leider nicht wovon Du schreibst (exit status) aber vielleichht find' ichs mal raus. Mit Bash meinte ich die Shell.

Gruß Wuschl
 
du solltest mit /bin/sh scripten, nicht mit /bin/bash :)

exit status ist der Wert den ein Programm bei beendigung zurückgibt. Alles anderes als 0 ist ei Fehler. Der Status befindet sind oft in der shellvariable $?
 
Thx, tom!!

Die Sache mit dem exit status hat mir keine Ruhe galassen, also hab ich mich auf die Suche gemacht.
Script funst soweit, muß nur noch das file auf die richtige Maschine kopieren und mit cron bekannt machen ;).
Funsen tut das bei mir so: echo schreibt smbstatus in eine Datei, die von grep auf die Hostnamen untersucht wird. wird ein Hostname gefunden so bricht das Programm ab wenn nicht init 0.

Mal generell zur Shell: Was spricht gegen die Bash und gibt es ein gutes Buch über die Bash/Sh? Die "Sonderzeichen" haben mich nämlich recht lange aufgehalten.

Gruß Wuschl
 
sühst ;)

POSIX schreibt zum sripten /bin/sh vor, weil /bin/sh zu POSIX gehört ;)
sh startet ewig viel schneller als die bash, und ist bei der ausführung schneller und ressourcenschonender.
die bash ist eigentlich für User-interaktion da, ebenso wie die tcsh...
sh und csh sind da besser, wobei in csh scripten, wie ich am eigenen leib bemerkt habe, irsinn ist.

...und Literatur gibt's en masse`
 
Thx! Ich wollte schon oft die Grundfunktionen der Shell (in diesem Fall Bash) erlernen, scheiterte aber immer daran dass elementare Befehle wie zb. "if" nicht ordentlich dokumentiert waren. Ein "man if" brachte nur eine mehrseitige Erklärung zutage. Leider wurden all die tollen Parameter nicht dokumentiert.

Gruß Wuschl
 
Original geschrieben von Wuschl
Funsen tut das bei mir so: echo schreibt smbstatus in eine Datei, die von grep auf die Hostnamen untersucht wird. wird ein Hostname gefunden so bricht das Programm ab wenn nicht init 0.

..

als naechstes lernen wir, wie man pipes benutzt:
Code:
smbstatus | grep ..
dann schauen wir uns an, ob man nicht die ausgabe von smbstatus auf das wesentliche reduzieren und gleichzeitig die noetigen informationen erhalten kann. da wir bei grep nur auf den exit-status checken und keine ausgabe benoetigen, gibts auch da eine option:
Code:
smbstatus -b | grep -q ..
zusammen mit einem check sieht das dann so aus:
Code:
if ! { smbstatus -b | grep -q ..; } then
   init 0
fi
oder etwas verkuerzt:
Code:
{ smbstatus -b | grep -q ..; } || init 0
warum das alles so aussieht, kann man schritt fuer schritt in man sh nachlesen.
 
Ich komm' aus dem Staunen nicht heraus :o

Danke!

Nur ein kleines Problem hätte ich gerne mit dem init 0: Cron behauptet der Befehl init sei nicht zu finden *noahnung*

Und das obwohl cron dieses Script für root ausführt. Liegt vielleicht daran dass ich cron die entsprechenden Rechte verschaffen sollte (sudo?) => Nur als welcher User führt Cron das Script aus? Evtl. aus User daemon??

Gruß Wuschl

Ps: Vom User root manuell aufgerufen funst das Script wunderbar
 
das script hat höchstswarscheinlich keinen PATH, daher musst du den Pfad zu init selber angeben... also
'/sbin/init 0'
dann
 
Jo, danke und sorry die blöde Frage, bin "zeitgleich" von selbst auf die Lösung gekommen.

Gruß Wuschl
 
Original geschrieben von Tom24

sh startet ewig viel schneller als die bash, und ist bei der ausführung schneller und ressourcenschonender.

Wobei im Normalfall bei Linux /bin/sh ein link auf /bin/bash ist und daher das Verwenden von /bin/sh eine reine Formsache ist.
 
Original geschrieben von [P3D] BRUN0
Wobei im Normalfall bei Linux /bin/sh ein link auf /bin/bash ist und daher das Verwenden von /bin/sh eine reine Formsache ist.

richtig, darum /bin/sh verwenden, damit es auf anderen systemen evtl. auch laeuft.
 
Original geschrieben von Wuschl
Was spricht gegen die Bash und gibt es ein gutes Buch über die Bash/Sh?

Hi

Habe das hier selbst zu hause

3826608836.03.LZZZZZZZ.jpg

http://www.amazon.de/exec/obidos/AS...025/ref=sr_8_xs_ap_i1_xgl/302-0406084-8296052

Kann es wirklich empfehlen. Hat viele Beispiele drin und ein recht guter Aufbau - auch für "beginners", wie mich geeignet...

greets
 
Original geschrieben von [P3D] BRUN0
Wobei im Normalfall bei Linux /bin/sh ein link auf /bin/bash ist und daher das Verwenden von /bin/sh eine reine Formsache ist.
auf den Mainstraim Linux Distributionen, ja... auf dem Rest der Welt, nein...
 
Mal zur Shellprogrammierung:

Habe mir den ersten Teil der Linuxfiebel ausgedruckt, das reicht erstmal für den Anfang :D

Gruß Wuschl
 
Zurück
Oben Unten