JavaでJSchを介してSSH接続を確立していますが、この.shファイルを実行しようとするまで、すべてが正常に機能しているように見えました。シェルスクリプトの名前は次のとおりですrepoUpdate.sh
。非常に単純です。
echo ' ****Repository update****'
echo ' Location: /home/cissys/repo/'
echo -e ' Command: svn update /home/cissys/repo/2.3.0'
svn update /home/cissys/repo/2.3.0
これは、コマンドの適切な応答とともにLinuxコンソールに直接表示される出力です。
[cissys@dsatelnx5 ~]$ repoUpdate.sh
****Repository update****
Location: /home/cissys/repo/
Command: svn update /home/cissys/repo/2.3.0
At revision 9432.
これが、この同じファイルを呼び出そうとするSSH接続を使用したメソッドのJavaコードです。
public void cmremove()
{
try
{
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
UserInfo ui = new SUserInfo(pass, null);
session.setUserInfo(ui);
session.setPassword(pass);
session.connect();
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
InputStream in = channelExec.getInputStream();
channelExec.setCommand("./repoUpdate.sh");
channelExec.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
int index = 0;
while ((line = reader.readLine()) != null)
{
System.out.println(++index + " : " + line);
}
channelExec.disconnect();
session.disconnect();
System.out.println("Done!");
}
catch(Exception e)
{
System.err.println("Error: " + e);
}
}
そして、私が得る応答は次のとおりです。
run:
1 : ****Repository update****
2 : Location: /home/cissys/repo/
3 : Command: svn update /home/cissys/repo/2.3.0
Done!
BUILD SUCCESSFUL (total time: 2 seconds)
svn
コマンド( )の出力や実行の兆候はまったくありAt revision 9432
ません。
コマンドを正しく実行させずに、ある時点でセッションを閉じている可能性があると思います。updateRepo.sh`` file would've had something like
cp test.txt test_2.txt`であれば、問題なく実行できます。しかし、私はこれと他のいくつかの特定の.shファイルでのみこの問題を抱えています。
どんな助けでもいただければ幸いです。