ssh隧道到數據庫。我正在嘗試編寫一個腳本,該腳本使用SSH隧道訪問數據庫。 我無法使其正常工作。 有人嘗試過嗎?
我已經設置了ssh密鑰,並且可以運行打開的數據庫,如果我在與腳本分開的cmd窗口中運行ssh命令,則可以返回它,但是如果我可以將所有內容集成到JSL中,我都希望它返回(因此,用戶不必記住打開隧道)。
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();
提前致謝。
回复:SSH隧道到數據庫。我猜想RunProgram永遠等待著,試圖從ssh.exe獲取所有輸出。
ReadFunction(“ text”),這意味著RunProgram應該阻塞直到程序完成,然後返回程序生成的任何文本(在您的示例中可能沒有)。
這不會阻塞,並將所有輸出複製到日誌中:
ReadFunction(
Function( {this},
write(this << read);
)
)如果可行,rp(在您的原始示例中)將是runprogram對象,而不是返回的文本。
https://community.jmp.com/t5/Uncharted/JSL-to-Control-Raspberry-Camera/ba-p/226243 使用plink.exe,它可能等同於ssh.exe。我不得不用
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>
徹底斷開連接;我認為rp << writeeof應該可以,但是沒有成功。
回复:SSH隧道到數據庫。D'ah。 應該想到了。 謝謝。