túnel ssh a la base de datos.Estoy tratando de escribir un script que use un túnel SSH en una base de datos para acceder a él. No puedo hacer que funcione. ¿Alguien más ha intentado esto antes?
Ya configuré mi clave ssh y puedo ejecutar la base de datos abierta y devolverla si ejecuto el comando ssh en una ventana cmd separada del script, pero me gustaría si puedo integrar todo en el JSL (por lo que los usuarios no tienes que acordarte de abrir el túnel).
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();
Gracias por adelantado.
Re: túnel ssh a la base de datos.Supongo que RunProgram espera para siempre, tratando de obtener toda la salida de ssh.exe.
ReadFunction ("texto"), lo que significa que RunProgram debería bloquearse hasta que el programa finalice, luego devolver cualquier texto que el programa haya producido (probablemente ninguno en su ejemplo).
Esto no bloqueará y copiará cualquier salida al registro:
ReadFunction(
Function( {this},
write(this << read);
)
)Si eso funciona, rp (en su ejemplo original) será el objeto runprogram en lugar del texto devuelto.
https://community.jmp.com/t5/Uncharted/JSL-to-Control-Raspberry-Camera/ba-p/226243 usa plink.exe, que probablemente sea equivalente a ssh.exe. Tuve que usar
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>
para obtener una desconexión limpia; Pensé que rp << writeeof debería funcionar pero no fue exitoso.
Re: túnel ssh a la base de datos.D'ah Debería haber pensado en eso. Gracias.