Hi,

hat einer schon mal plink erfolgreich in RB eingebunden? (plink = SSH
Support unter Windows)

Klemens

ja, habe ich ;-)
ich baue mit plink.exe einen SSH-tunnel zu einem server auf, um "dort" auf eine MySQL-datenbank zuzugreifen.

mehr oder weniger klappts so:

1) plink.exe als Ressource ins RB-projekt eingebunden -> in ein temporäres verzeichnis schreiben, dann dort starten
      dim str As BinaryStream
      str = eoSSHTunnelFile.CreateBinaryFile(fltBIN.MyShell)
      str.Write plink
      str.Close

2) oder die plink.exe mitliefern, und als FolderItem holen:
        eoSSHTunnelFile = f.Parent.Child("plink.exe")


3) aufrufen - hier mit einem beispiel, einen SSH-tunnel zu öffnen:
      if (eoSSHTunnelFile <> nil) and eoSSHTunnelFile.Exists then
        eoSSHTunnel = New Shell
        eoSSHTunnel.Mode = 1
eoSSHTunnel.Execute eoSSHTunnelFile.ShellPath + " -x -a -T - pw " + DecodeString("XYZ") + " " + DecodeString("ABC") + " -L " + MySQL_Port + ":localhost:3306"
        'App.SleepCurrentThread(1500) 'Testen, ob's auch ohne geht...
        if eoSSHTunnel.ErrorCode <> 0 then
msgbox "SSHTunnel - Error Code: " + str (eoSSHTunnel.ErrorCode)
        end if
      else
        msgbox "SSHTunnel - Error Code: " + str(eoSSHTunnel.ErrorCode)
      end if

    catch err As RuntimeException
      eoSSHTunnelFile = nil
'if (eoSSHTunnelFile <> nil) and (eoSSHTunnelFile.Exists) then eoSSHTunnelFile.Delete
    End Try


ich habe es schon lange nicht mehr gebraucht - so kann ich wohl nicht viele tipps geben...
erinnern tue ich mich noch an folgendes:
ich musste plink zuerst 1x von hand im cmd.exe starten.
denn beim ersten aufruf musste ich mit "y" bestätigen... das habe ich wohl nicht in der RB-shell gemacht.


vielleicht gibt das ja doch eine idee, wie's funktionieren könnte.
wie gesagt - habe nur den ssh-tunnel gebraucht. sonst habe ich dann keine kommandos via plink abgesetzt, oder die "resultate" der shell gelesen und weiterverwendet...

jürg


Antwort per Email an