Prozesse entfernt aufrufen und beenden

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Junktyz, 15.05.2007.

  1. #1 Junktyz, 15.05.2007
    Junktyz

    Junktyz Grünschnabel

    Dabei seit:
    15.05.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,

    ich möchte auf mehreren Remote-PCs ein tcpdump machen und dieses dann auf meinem Rechner speichern. Dies mache ich folgendermaßen

    Code:
    rsh -l root 172.16.100.144 /usr/sbin/tcpdump host not 172.16.100.0 -c 1000 -w - > ./1.dump &
    
    rsh -l root 172.16.96.0 /usr/sbin/tcpdump host not 172.16.100.0 -c 1000 -w - > ./2.dump &
    
    Da die beiden tcpdumps parallel ablaufen sollen, starte ich sie im Hiontergrund. Ab dann habe ich aber keine Kontrolle mehr über sie, weshalb ich mit -c 1000 nur 1000 Pakete trace. Ich würde aber gerne, dass ich den tcpdump ohne das -c Argument starte und bei einem Tastendruck (oder einem anderen event) den tcpdump auf den remote PCs beende. Allerdings weiß ich nicht wie ich das machen soll.
    Kann ich mir beim Starten des jeweiligen tcpdumps irgendwie die PID merken und über die dann später den Prozess beenden?
    Oder gibt es eine andere Möglichkeit?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 15.05.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ich glaube "screen" ist das was du suchst......
     
  4. #3 nice2kn0w, 15.05.2007
    nice2kn0w

    nice2kn0w Mitglied

    Dabei seit:
    09.05.2007
    Beiträge:
    39
    Zustimmungen:
    0
    also, so wie sich das anhört möchtest Du alle tcpdumps gleichzeitig starten, sowie auch beenden. Versuchs mal mit clusterssh, das dürfte Dir schnell weiterhelfen und ist im Gegensatz zum rudimentären rsh, auch noch wesentlich sicherer. http://clusterssh.sourceforge.net

    cheers
     
  5. #4 Junktyz, 23.05.2007
    Junktyz

    Junktyz Grünschnabel

    Dabei seit:
    15.05.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Das Problem ist, dass das System, auf dem das Skript läuft sehr minimalistisch ist und ic hdort auch keine zusätzliche Software installieren kann.

    Ich habe mal folgendes ausprobiert. Mit fg hole ich mir ja einen job zurück. Wenn ich folgendes im Skript ausführe,
    Code:
    rsh -l root 172.16.100.144 /usr/sbin/tcpdump host not 172.16.100.0 -c 1000 -w - > ./1.dump &
    
    fg $!
    
    kommt die Fehlermeldung "./collect.sh: line 13: fg: no job control"

    Eine andere Idee ist, später wieder mit einem rsh auf den Remote-PC zu gehen und den Prozess zu killen. Dazu bräuchte ich aber die Prozess ID vom entfernt aufgerufenen tcpdump, mit

    Code:
    rsh -l root 172.16.100.144 /usr/sbin/tcpdump host not 172.16.100.0 -c 1000 -w - > ./1.dump &
    
    echo $!
    
    bekomme ich aber leider nur die PID von rsh, was mir ja nichts bringt.

    Hat jemand ne Lösung, wie ich an die PID von tcpdump komme?
     
  6. #5 Junktyz, 24.05.2007
    Junktyz

    Junktyz Grünschnabel

    Dabei seit:
    15.05.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Ich bin jetzt soweit, dass ich mir die pid vom entfernten tcpdump hole und dann später mit dem kill befehl den Prozess mit dieser pid kille.

    Aber ich würde gerne folgenden Code ausführen, was es einfacher machen würde:

    Code:
    rsh -l root 172.16.100.144 kill $(pidof tcpdump)
    
    Allerdings kommt da die Fehlermeldung:

    kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]

    Wenn ich mich aber mit telnet direkt auf den Rechner verbinde und da dann "kill $(pidof tcpdump)" ausführe, dann beendet er alle tcpdump-Befehle.

    Weiß jemand wo der Fehler ist warum es mit rsh nicht funktioniert?
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 Fallout, 24.05.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    Ohne den Backslash wird Dein Subshell-Aufruf auf Deinem lokalen System gemacht. Du mußt das entsprechende Steuerzeichen (das Dollar-Zeichen) "escapen", damit der Aufruf über die rsh an das entfernte System übergeben wird, anstatt ihn lokal durchzuführen.
    Eine andere Möglichkeit wäre, das ganze in Singlequotes (') zu packen, damit der darinliegende Subshellaufruf unverändert übertragen wird.

    Gruß Daniel
     
  9. #7 Junktyz, 24.05.2007
    Junktyz

    Junktyz Grünschnabel

    Dabei seit:
    15.05.2007
    Beiträge:
    4
    Zustimmungen:
    0
    Danke, jetzt funktioniert es. :).
     
Thema:

Prozesse entfernt aufrufen und beenden

Die Seite wird geladen...

Prozesse entfernt aufrufen und beenden - Ähnliche Themen

  1. Prozesse mit Kindern in ScreenSession transferien

    Prozesse mit Kindern in ScreenSession transferien: Moin, ich hab mal ne Allg. Frage ob das überhaupt geht. Allg kann man ja einzelne Processe von einem terminal in ein anderes packen....
  2. Demon im Runlevel2 erzeugt SIGTERM in den nachfolgenden Prozessen

    Demon im Runlevel2 erzeugt SIGTERM in den nachfolgenden Prozessen: Hallo Ich habe apache derby auf meinem UBUNTU-System installiert und lass es normal in runlevel 2 hochfahren. sh...
  3. Mozilla will Firefox-Prozesse verbessern

    Mozilla will Firefox-Prozesse verbessern: Es bleibt bis auf weiteres bei den schnellen Veröffentlichungszyklen und den Versionsnummern von Firefox. Wie Mitchell Baker erklärte, will...
  4. Samba Share / Linux Prozesse -> Violation

    Samba Share / Linux Prozesse -> Violation: Hallo, ich habe folgende Situation. 1.) Samba freigabe auf /usr/app/interfaces 2.) Eine Unix Applikation scannt alle 60sec dieses...
  5. Threads || Prozesse & Semaphoren

    Threads || Prozesse & Semaphoren: Hallo, ich muss für die Schule eine simulation programmieren. Es handelt um diese Problemstellung: "Simulieren sie eine Mautstelle mit zwei...