Anzeige:
Ergebnis 1 bis 8 von 8

Thema: ssh2_exec problem

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.06.2003
    Beiträge
    37

    ssh2_exec problem

    Hi,
    ich habe mir mal die pecl erweiterung ssh2 installiert. ist auch ziemlich geil, nur habe ich ein problem mit ssh2_exec();
    wenn ich z.B. so ein bashscript habe:
    PHP-Code:
    #!/bin/bash
    echo hallo
    screen 
    -wipe
    echo moo
    weiterekommandos 
    und dann dieses script per ssh2_exec aufrufe:
    PHP-Code:
    <?php
    connectZeug
    ();
    $stream ssh2_exec($connection'/pfad/meines/bashscripts.sh''vt102'NULL8024SSH2_TERM_UNIT_CHARS);
    $ausgabe false;
    if (
    $stream) {
       
    stream_set_blocking$streamtrue );
       
    $ausgabe =  fread$stream4096 );
    }
    ?>
    bei $ausgabe ist dann komischerweise das "moo" nicht dabei. heisst, es bricht nach dem `screen -wipe` ab
    genau so verhaelt es sich, wenn z.B. ein "killall" im script steht

    Habe auch schon mit den ssh2_exec parametern rumgespielt, jedoch kein erfolg gehabt.

    Hoffe mir kann jemand helfen.

    Viele Gruesse,
    senfmensch

  2. #2
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von senfmensch
    Habe auch schon mit den ssh2_exec parametern rumgespielt, jedoch kein erfolg gehabt.

    Hoffe mir kann jemand helfen.

    Viele Gruesse,
    senfmensch
    Versuch:
    Verwende in deinem Shellscript mal die here doc Syntax.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.06.2003
    Beiträge
    37
    hi,
    meinst du sowas ?
    cat <(screen -wipe)
    ?
    oder was ist heredoc ?

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.06.2003
    Beiträge
    37
    oh
    wen ich das ganze so schreibe funktionierts:
    PHP-Code:
    <?php
    $stream 
    ssh2_exec($connection'echo $(/pfad/meines/bashscripts.sh)''vt102'NULL8024SSH2_TERM_UNIT_CHARS);
    kann sich das einer erklaeren ?

  5. #5
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von senfmensch
    oh
    wen ich das ganze so schreibe funktionierts:
    PHP-Code:
    <?php
    $stream 
    ssh2_exec($connection'echo $(/pfad/meines/bashscripts.sh)''vt102'NULL8024SSH2_TERM_UNIT_CHARS);
    kann sich das einer erklaeren ?
    Die Funktion wird ssh direkt ansprechen.
    Wenn Du also vorher noch andere Spielchen mit andern Interpretern
    machst, klappt das natürlich nicht. Dafür ist system() usw. geeignet.

    Geschmackssache:
    Wenn du also Action Local und Remote im gleichem Script machen möchstest,
    würde ich das über die Shell regeln, sonst bist du immer ein
    Prisoner der PHP Funktionen.

    Außerdem überleg doch mal, wann welcher Interpreter mit welchem
    return klar kommen muß.

    --
    ssh2_exec


    (PECL)

    ssh2_exec -- Execute a command on a remote server

    Description

    resource ssh2_exec ( resource session, string command [, string pty [, array env [, int width [, int height [, int width_height_type]]]]] )
    --


    Die here doc Syntax gibt es in PHP, Perl, Shell und wahrscheinlich noch
    in anderen Interpretersprachen.
    Also ganz alter Hut auf neuem Kopf.
    http://www.google.de/search?hl=de&ie...le-Suche&meta=
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  6. #6
    Registrierter Benutzer
    Registriert seit
    11.06.2003
    Beiträge
    37
    Zitat Zitat von Romanday
    Die Funktion wird ssh direkt ansprechen.
    Wenn Du also vorher noch andere Spielchen mit andern Interpretern
    machst, klappt das natürlich nicht. Dafür ist system() usw. geeignet.
    ein $ ssh user@host /pfad/zu/meinem/script.sh funktioniert problemlos.
    Zitat Zitat von Romanday
    Geschmackssache:
    Wenn du also Action Local und Remote im gleichem Script machen möchstest,
    würde ich das über die Shell regeln, sonst bist du immer ein
    Prisoner der PHP Funktionen.
    ich habs doch ueber die shell geregelt, indem ich ein shellscript geschrieben habe.
    Zitat Zitat von Romanday
    Außerdem überleg doch mal, wann welcher Interpreter mit welchem
    return klar kommen muß.
    genau das versteh ich nicht. wieso wartet ssh2_exec das script und dessen exitcode nicht ab ?
    Zitat Zitat von Romanday
    --
    ssh2_exec


    (PECL)

    ssh2_exec -- Execute a command on a remote server

    Description

    resource ssh2_exec ( resource session, string command [, string pty [, array env [, int width [, int height [, int width_height_type]]]]] )
    --
    Ein bash script ist nix anderes als ein command oder ?
    Zitat Zitat von Romanday
    Die here doc Syntax gibt es in PHP, Perl, Shell und wahrscheinlich noch
    in anderen Interpretersprachen.
    Also ganz alter Hut auf neuem Kopf.
    http://www.google.de/search?hl=de&ie...le-Suche&meta=
    Ja aber was bringt mir ein echo <<<EOF
    blabla
    EOF
    bei meinem problem ?

    Gruss
    senfmensch

  7. #7
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    >ich habs doch ueber die shell geregelt, indem ich ein shellscript geschrieben habe.

    Na also.

    >genau das versteh ich nicht. wieso wartet ssh2_exec das script und dessen exitcode nicht ab ?

    die Funktion ist nun mal so.

    >Ein bash script ist nix anderes als ein command oder ?
    www.linuxfibel.de > lesen -a `man bash`

    > Ja aber was bringt mir ein echo <<<EOF
    Ist einfach bequemer zu warten wenn Du mehrere Anweisungen per SSH
    übermittelst.

    Um es kurz zu machen. 1000 Wege führen nach Rom. Man kann alles
    in PHP oder Shell scheiben. Sollen beide aber miteinander harmonieren,
    und möchte ich in einem Shellsript mehrere unterschiedliche Befehle
    ausführen SSH + Init + PS etc. ist wartungsfreundlicher alles in einem
    Shellscript zu regeln. (< in diesem Fall)

    Um den Kopf zu lockern ::
    Die Shell überschreibt mit jeder neuen Anweisung den return Wert des
    letzten Befehls im Script.
    Jetzt sollte klar sein das ssh2_exec() meckern muß, wenn du
    vorher noch andere Anweisungen im Shellscript ausführst.
    Außerdem braucht Sie keine zusätzliche Interpreter Anweisung.
    (Das ist doppelt gepoppelt.)
    Geändert von Romanday (13-04-2006 um 01:56 Uhr)
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  8. #8
    Registrierter Benutzer
    Registriert seit
    11.06.2003
    Beiträge
    37
    Zitat Zitat von Romanday
    die Funktion ist nun mal so.
    was ziemlich kacka ist
    www.linuxfibel.de > lesen -a `man bash`
    ja ne wenn ich mir ein bashscript baue und es in den pfad haue, ist es ein command :>
    Ist einfach bequemer zu warten wenn Du mehrere Anweisungen per SSH
    übermittelst.
    okey. aber in meinem fall wird das script von PHP sowie von der Kommandozeile benutzt.
    Die Shell überschreibt mit jeder neuen Anweisung den return Wert des
    letzten Befehls im Script.
    Jetzt sollte klar sein das ssh2_exec() meckern muß, wenn du
    vorher noch andere Anweisungen im Shellscript ausführst.
    klar ist mir das nicht, da jeder andere exec befehl in php (sei es system, exec oder was auch immer) nicht in dieser art auf ein bashscript reagiert, sondern brav das scriptende abwartet.
    Außerdem braucht Sie keine zusätzliche Interpreter Anweisung.
    (Das ist doppelt gepoppelt.)
    Was meinst du damit? dieses echo $(..) ?
    tja anders gehts halt nicht, ohne dass das Script fruehzeitig abbricht :-(

    gruss
    senfmensch
    Geändert von senfmensch (18-04-2006 um 19:33 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •