1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Ersehen, ob Service läuft

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von tfc, 02.10.07.

  1. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Hallo Leute

    Wenn ich in den Systemeinstellungen unter "Sharing" meine Services, wie SSH, FTP, SMB usw. anklicke, dann kann ich sie starten und beenden, klar.

    Ich schreibe mir allerdings gerade einige Bashscripte, die an einer Stelle feststellen sollen, ob und welche Services laufen. Da beispielsweise SSH nicht in der Prozessliste auftaucht, wird es wohl einen Überservice geben, der den entsprechenden Daemon bei Bedarf startet.

    Welcher Prozess ist das und wie arbeite ich damit?
    Es wäre auch interessant für mich zu erfahren, wie ich ihn per Konsole bediene, um die Services selbst zu starten und zu beenden.

    Ist irgendwie komisch. Unter Linux kenne ich das alles in- und auswendig und hier sitz ich trotz Bash wie nen Fisch im Trockenen. ;)
     
  2. zeno

    zeno Lane's Prinz Albert

    Dabei seit:
    05.11.05
    Beiträge:
    4.898
    Der prozess heißt wohl eher sshd, aber das er prozess läuft heißt ja noch nicht zwingend das er richtig läuft.. vielleicht einfach per grep aus netstat guggen ob der port offen ist?!
     
  3. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Ja, so bin ichs auf Maschinen gewohnt, die nen Extra-SSH-Daemon ständig laufen haben.
    Ein ps -e | grep ssh bringt da schon Ergebnisse. Aber das ist ja hier nicht der Fall.

    Naja, vorher hab ich's per "nmap -v -p 22 localhost | grep ssh" gecheckt, was auch funktioniert und in etwa der netstat-Methode entspricht. Aber irgendwie ist das unsauber, weil man hier relativ lange warten muss.


    Danke für den Link, Trapper. Den studiere ich dann mal durch.
     
  4. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
  5. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Genau davon ging ich ja aus. Und das ist ja der Grund, wieso es nicht in der Prozessliste auftaucht.

    Nach ein wenig Lesen habe ich herausgefunden, dass "launchctl list | grep ssh" gut geht.
    Problem: Das Script, das ich schreibe, soll auf keinen Fall etwas mit Rootberechtigungen am Hut haben. Als Normaluser zeigt launchctl aber auch nur an, was als Normaluser gestartet wurde...
     
  6. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    Warum nimmst Du nicht "top"?
     
  7. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Wahrscheinlich, weil der sshd-Prozess nur dann existiert, wenn gerade jemand sich via SSH eingeloggt hat und sonst nicht - er den Zustand des Dienstes SSH aber unabhängig von dessen aktueller Nutzung abfragen will.
     
  8. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Mal eine Frage von der anderen Seite, was soll das Skript denn überhaupt tun und warum muß es feststellen ob SSH aktiv ist, bzw. ob launchd einen sshd starten würde falls jemand eine Verbindung versuchte?
    Gruß Pepi
     
  9. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Ja, richtig.

    Ich habe ein Script, das mir bestimmte Informationen auf einen Blick anzeigt. Der Status des SSH-Servers gehört dazu.
     
  10. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    Du wirst wohl nicht um
    sudo launchctl list
    herumkommen, weil die Instanz von launchd, die für root tätig ist, den SSH-Dämon kontrolliert.
     
  11. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Dann bliebe wohl nur noch als Alternative einen Verbindungsversuch auf den Port zu machen. Das überprüft zwar nicht explizit ob launchd den sshd starten würde, aber immerhin ob der Port erreichbar ist und ein TCP connect zuläßt.

    Für localhost beispielsweise:
    Code:
    nc -z 127.0.0.1 22
    Gibt 0 zurück wenn der Port verbunden werden konnte, und 1 bei einem Fehler. Siehe auch man nc(1).
    Gruß Pepi
     
    #12 pepi, 03.10.07
    Zuletzt bearbeitet: 03.10.07
  12. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.898
    Code:
    man service
    
     
  13. tfc

    tfc Ontario

    Dabei seit:
    21.07.07
    Beiträge:
    348
    Danke, Rastafari. Genau danach habe ich gesucht. Funktioniert perfekt.
     
  14. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    service --list
    zeigt jedoch "ssh" an, egal ob der Dämon geladen ist (ssh login klapp) oder nicht (ssh login klappt nicht).
     
  15. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Daher ist --list auch eine unpassende Option. Allerdings:
     
  16. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    Schauen wir mal:

    KeyWest:~ macmark$ service --test-if-available ssh
    KeyWest:~ macmark$ echo $?
    0
    KeyWest:~ macmark$ sudo launchctl unload -F /System/Library/LaunchDaemons/ssh.plist
    KeyWest:~ macmark$ ssh keywest
    ssh: connect to host keywest port 22: Connection refused
    KeyWest:~ macmark$ service --test-if-available ssh
    KeyWest:~ macmark$ echo $?
    0
    KeyWest:~ macmark$ sudo launchctl load -F /System/Library/LaunchDaemons/ssh.plist
    KeyWest:~ macmark$ ssh keywest
    Password:

    KeyWest:~ macmark$ service --test-if-available ssh
    KeyWest:~ macmark$ echo $?
    0

    Für mich sieht der service-Befehl nicht nutzbringend aus hier.
     
  17. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Nunja, kein Wunder da --test-if-available != --test-if-configured-on o_O
     
  18. MacMark

    MacMark Biesterfelder Renette

    Dabei seit:
    01.01.05
    Beiträge:
    4.709
    Schön, probieren wir das auch durch:

    KeyWest:~ macmark$ sudo launchctl load -F /System/Library/LaunchDaemons/ssh.plist
    KeyWest:~ macmark$ service --test-if-configured-on ssh
    KeyWest:~ macmark$ echo $?
    0
    KeyWest:~ macmark$ ssh keywest
    Password:

    KeyWest:~ macmark$ sudo launchctl unload -F /System/Library/LaunchDaemons/ssh.plist
    Password:
    KeyWest:~ macmark$ ssh keywest
    ssh: connect to host keywest port 22: Connection refused
    KeyWest:~ macmark$ service --test-if-configured-on ssh
    KeyWest:~ macmark$ echo $?
    0
    KeyWest:~ macmark$ sudo launchctl load -F /System/Library/LaunchDaemons/ssh.plist
    KeyWest:~ macmark$ ssh keywest
    Password:

    KeyWest:~ macmark$ service --test-if-configured-on ssh
    KeyWest:~ macmark$ echo $?
    0

    Immer noch nicht nutzbringend …
     
  19. Trapper

    Trapper Boskop

    Dabei seit:
    12.05.05
    Beiträge:
    213
    Hm, also aktiviert und deaktiviert über das Sharing-Panel via GUI klappt es bei mir wunderbar...
     

Diese Seite empfehlen