Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - ssh Verbindung zu anderem System

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [WireGate-Plugin] - √ - ssh Verbindung zu anderem System

    Hallo zusammen,

    habe hier ein Problemchen ;-)

    Ich möchte ein Script auf einem Raspberry Pi starten, wenn auf eine bestimmte GA ein Ein-Telegramm ankommt.

    Also hört mein WG-Plugin auf diese GA.
    Danach möchte ich eine SSH-Verbindung zum Pi aufbauen und das Script starten.

    Der entsprechende Code ist hier:
    Code:
        	my $command = "sshpass -p Password ssh pi@192.168.2.199 'sudo /opt/startScript.sh'";
        	my $status = system($command);
        	return $status;
    Als Rückgabewert erhalte ich 65280, was wohl dem Returncode 255 von ssh entspricht...
    Auf der Konsole kann ich den Befehl jedoch ohne Probleme starten, als user und root.
    Ich hätte sogar Authentifzierung für user@wiregate per PublicKey auf dem Pi erlaubt...aber die Plugins werden sicherlich nicht als user ausgeführt? Um sshpass komme ich wohl nicht rum?

    Hilfe habe ich mir hier schon geholt, aber ich bekomms leider nicht hin...

    Danke schon mal für eure Hilfe!
    VG
    ...good byte...

    #2
    Das Plugin das Du als Hilfe genutzt hast verwende ich auch, bei mir schaut es dann so aus:

    Code:
     
    system("ssh wol@" . $ip_address . " sudo /sbin/poweroff");
    return "gesendet";
    Unterschiede:
    - ich benutze pubkey-Authentication, das geht also
    - das Command ist bei mir nicht noch mal in Hochkomma gesetzt.

    Vielleicht hilft dir das ja weiter...

    Grüße,
    Julian

    Kommentar


      #3
      Zitat von netzkind Beitrag anzeigen
      - ich benutze pubkey-Authentication, das geht also
      Wiregate-Plugins laufen als root, du musst also dessen public ssh key verwenden.

      Grüße,
      Julian

      Kommentar


        #4
        Danke für die Hinweise...
        habe jetzt sowohl den autogenerierten PubKey, wie auch einen von mir für root erstellten PubKey auf dem Pi authorisiert - aber es will trotzdem nicht...von der Konsole gehts auch als root ohne Kennworteingabe...

        ich kann auf dem Wiregate auch lokale skripte ausführen...muss ich im Plugin noch ein use verwenden? Kennt Perl system oder ssh so nicht?
        ...good byte...

        Kommentar


          #5
          hmmm, umgangen :-/

          so...hatte jetzt keine Lust mehr.

          hab das Problem jetzt umgangen, in dem ich ein Script aus dem Plugin starte.
          Dieses Script baut über ssh die Verbindung auf und löst dann das Script auf dem Pi aus - unschön, aber es funktioniert.

          dennoch würde mich interessieren, warum es nicht funktioniert hatte...
          ...good byte...

          Kommentar


            #6
            Dazu müssen wir erst mal raten, was in deinem plugin-log drinsteht. Mein Vorrat an Hellsichtigkeit ist für heute aber aufgebraucht... ;-)

            Grüße,
            Julian

            Kommentar


              #7
              Da steht nicht wirklich viel...returncode 65280, oder wo kann ich mehr Infos holen?
              ...good byte...

              Kommentar


                #8
                Ich hatte angenommen, dass dort eine Ausgabe vom ssh zu finden sei.
                Wenn das nicht der Fall ist, dann schau mal auf deinem raspi ins auth.log, ob der Login per ssh denn geklappt hat.

                Sonst gehe ich nach wie vor davon aus, dass die Hochkomma dazu führen, dass ssh das alles als "ein Kommando" ausführen will, was nicht geht, da es sich um ein Kommando und seine Parameter handelt. Deshalb mal ohne die einfachen Tüddelchen probieren.

                Alternativ auf dem Wiregate als root einloggen, und das komplette ssh-Kommando 1:1 abfeuern, also am besten per Copy & paste, um Tippfehler oder dergleichen zu finden.

                Kommentar


                  #9
                  Danke

                  so...danke für Deine Hilfe.
                  Es funktioniert jetzt...habe jetzt genau Deinen Code hergenommen (mit meinem Script natürlich ;-))

                  Code:
                  my $status = system("ssh pi@" . $ip_address . " sudo /opt/startScript.sh");
                  Dieses hier hat nämlich auch nicht funktioniert, warum auch immer:
                  Code:
                  my $status = system("ssh pi@192.168.2.254 sudo /opt/startScript.sh");
                  Da sah ich in der auth.log des Pi auch keine Anmeldung, also hat er wohl wirklich die Parameter des SSH nicht wirklich verstanden - ich vermute der Perlinterpreter nimmt diese Kombination aus string@IP-Address krumm!?

                  Danke nochmal für Deine Geduld und jetzt schöne Feiertage, vlt bringt das Christkind ja no ne Glaskugel, wenn dich wieder mit jemand wie mir rumschlagen darfst ;-)
                  ...good byte...

                  Kommentar

                  Lädt...
                  X