Sie sind nicht angemeldet.

pzueco

Anfänger

  • »pzueco« ist männlich
  • »pzueco« ist der Autor dieses Themas

Beiträge: 12

Wohnort: Hannover

Beruf: Technischer Asisstent fuer Informatik

  • Nachricht senden

1

02.03.2005, 12:54

sshd, @notty killen? skript? befehl?

Hallo,
ich habe gerade ein Projekt und zwar, ein Php Administations Tool
für meine schule.
Das script soll die gängisten Funktionen können,
zb. Dateien auf den Rechnern verteilen, init 6 iptables an aus,
Die skripte dafür sind vorhanden, kleine bash scripte, die wenn sie
aus der bash aufgerufen werden funktionieren.
zB. hier ein scp skript

Quellcode

1
2
3
4
#!/bin/bash

for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24;
do scp $1 root@10.22.8.$i:$2; done;


Nun zu meinem Problem,
Das ganze soll Webbasierend sein, dazu haben wir einen WebTestServer
eingerichtet, apache2 und php4.3.1, dazu dann noch eine ssh2 funktion
für php.
www.libssh2.org
http://pecl.php.net/package/ssh2
Hier ein Beispiel wie ich es installiert habe,

http://file.bbs-me.net/~antemannmic/prak…ll-Beispiel.txt

Die funktion des scriptes sind folgendermaßen aufgebaut:
hier die funktionen meiner classe die wir uns dazu erstellt haben

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
   function ssh2conn($host=''$port=''  ) {
 
      if( $host!='' $this->host  $host;
      if( $port!='' $this->port  $port;
 
      $callbacks = array('disconnect' => 'my_ssh_disconnect');
 

      $this->con  ssh2_connect($this->host$this->port ,$callbacks);

      if( !$this->con ) {
        $this->log "verbindugn konnte nicht aufgebaut werden !"; 
      }
 
   }
function authPassword$user ''$password '' ) {
 
      if( $user!='' $this->user  $user;
      if( $password!='' $this->password  $password;
 
      if( !ssh2_auth_password$this->con$this->user$this->password ) ) {
        $this->log .= "authenziefiezirung fehlgeschlagen !"; 
        
      }
         else {
        $this->loggedFlag=true;
        return true;
        }
   }
function cmdExec($cmd ) {
        $stream ssh2_exec$this->con$cmd );
    stream_set_blocking$streamtrue );
    return fread$stream4096 );
   }



so jetzt zum kern des problems,

ich starte das php script auf dem testserver,
Verbindung wird angemelded.
Password wird an die Verbindung gesandt, eingeloggt.
als sshd: user [priv]
19663 antemann 9 0 1636 1636 1548 S 0.0 0.7 0:00.00 sshd: antemannmic

so jetzt kann man seine commandos abgeben usw,

das resultat ist das das script durchgelaufen ist, der befehl ausgeführt wird
und
anteman 20264 0.0 0.7 5956 1824 ? S 12:43 0:00 sshd: antemannmic@notty

zurück bleibt?

wie kann ich den prozess töten? die session richtig beenden? oder sonst wie das problem lösen?

ich suche nach einem weg, zb das notty zu killen, dazu muss ich aber wissen wem welcher pid gehört,
oder eine php ssh funktion die ich übersehen habe damit das disconnect richtig funktioniert, angeblich soll das nämlich bereits gefixt wurden sein

vielen dank schon mal für die leute die sich das durchgelsen haben ;)
Nur mit Bier Siegen wir!

  • »LetoAtreides« ist männlich

Beiträge: 115

Wohnort: Karlsruhe

Beruf: Student

  • Nachricht senden

2

02.03.2005, 18:31

Hört sich für mich wie ein Vater / Kindproblem an.

Sprich dein SSH führt ein exec aus dieses ist ein Kindprozess von dieser SSH Verbindung. Solange dieses Kind existiert kann es sein das der Vaterprozess auch noch da bleibt. Dieses Problem hatte ich auch mal bei einer Programmierung eines Gamesservertools.

Schau dir mal mit pstree an wie diese Prozesse zusammen hängen.
That´s crazy....but hey...that´s how it goes!

pzueco

Anfänger

  • »pzueco« ist männlich
  • »pzueco« ist der Autor dieses Themas

Beiträge: 12

Wohnort: Hannover

Beruf: Technischer Asisstent fuer Informatik

  • Nachricht senden

3

03.03.2005, 14:57

ok hier noch mal ne log was beim connecten passiert

http://file.bbs-me.net/~antemannmic/praktikum/connection.log


wie muss ich zb n bash script angehen das ndie verbelibenden prozesse entfernt,
man kann zb nicht alle nottys killen sobald einer auftaucht, da manche prozesse ja längern dauern ich werde es trozdem mal probieren die
commands scheinen ja im hintergrund zu laufen nachdem meine ssh connection no tty geworden ist.
Nur mit Bier Siegen wir!

Thema bewerten