SSH-Tunnel zur Datenbank.Ich versuche, ein Skript zu schreiben, das einen SSH-Tunnel zu einer Datenbank verwendet, um darauf zuzugreifen. Ich kann es nicht zum Laufen bringen. Hat das schon jemand versucht?
Ich habe meinen ssh-Schlüssel bereits eingerichtet und kann die geöffnete Datenbank ausführen und zurückgeben, wenn ich den ssh-Befehl in einem vom Skript getrennten cmd-Fenster ausführe. Ich würde es jedoch begrüßen, wenn ich alles in die JSL integrieren kann (also Benutzer) Ich muss nicht daran denken, den Tunnel zu öffnen.
Names default to here(1);
rp = Run Program(
executable("ssh.exe"),
Options({"-tt", "-L 1414:localhost:1414", "test@test.com"}),
ReadFunction( "text" )
);
dt = open database(
"cxn_string",
"SELECT * FROM Test",
"Test"
);
rp << Write EOF();
Danke im Voraus.
Re: ssh Tunnel zur Datenbank.Ich vermute, RunProgram wartet ewig und versucht, die gesamte Ausgabe von ssh.exe abzurufen.
ReadFunction ("text"), was bedeutet, dass RunProgram blockiert, bis das Programm beendet ist, und dann jeden Text zurückgibt, den das Programm erstellt hat (wahrscheinlich keinen in Ihrem Beispiel).
Dies blockiert nicht und kopiert alle Ausgaben in das Protokoll:
ReadFunction(
Function( {this},
write(this << read);
)
)Wenn das funktioniert, ist rp (in Ihrem ursprünglichen Beispiel) das runprogram-Objekt und nicht der zurückgegebene Text.
https://community.jmp.com/t5/Uncharted/JSL-to-Control-Raspberry-Camera/ba-p/226243 verwendet plink.exe, was wahrscheinlich ssh.exe entspricht. Ich musste verwenden
rp <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Write</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"exit\!n"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
eine saubere Trennung zu bekommen; Ich dachte, rp << writeeof sollte funktionieren, war aber nicht erfolgreich.
Re: ssh Tunnel zur Datenbank.D'ah. Sollte daran gedacht haben. Vielen Dank.