我想在Windows XP中使用Jsch Shell通道执行一个命令,但由于某些原因,我在我的System.outstream中出现了奇怪的符号,并且命令无法执行,我用于连接的代码是这样的:
this.session = jsch.getSession(this.login, this.host); Properties properties = new Properties(); properties.put("StrictHostKeyChecking", "no"); session.setPassword(this.password); session.setConfig(properties); session.connect(30000); channel =(ChannelShell) session.openChannel("shell"); PipedInputStream pip = new PipedInputStream(40); channel.setInputStream(pip); channel.setOutputStream(System.out); PipedOutputStream pop = new PipedOutputStream(pip); print = new PrintStream(pop); channel.connect();
然后我得到以下消息:
[1;1HMicrosoft Windows XP [Versi n 5.1.2600][2;1H(C) Copyright 1985-2001 Microsoft Corp.[4;1HC:\Documents and Settings\diego\Escritorio>[4;44H
当我尝试调用一个CD C:\ MyFolder \然后另一个命令(所有testing从一个SSH客户端和工作)我发现更奇怪的符号,并没有得到我的命令的结果,有什么可以是这个问题? 以下是我发送的命令和结果:
exec.print.println("cd C:\\MyFolder\\"); exec.print.println("some other command");
结果:
[1;1HMicrosoft Windows XP [Versi n 5.1.2600][2;1H(C) Copyright 1985-2001 Microsoft Corp.[4;1HC:\Documents and Settings\diego\Escritorio>[4;44H[4;1HC:\Documents and Settings\diego\Escritorio>c[4;58H[4;1HC:\Documents and Settings\diego\Escritorio>cd C:\MyFolder\[4;58H[4;46H[4;58H[4;47H[4;58H[4;48H[4;58H[4;49H[4;58H[4;50H[4;58H[4;51H[4;58H[4;52H[4;58H[4;53H[4;58H[4;54H[4;58H[4;55H[4;58H[4;56H[4;58H[4;57H[4;58H
我在Windows XP中使用FreeSShd和程序在Ubuntu上运行,我在我的控制台中使用SSH和Windows XP的工作,我想实现它在我的Java程序,感谢您的任何帮助。
你有没有试过直接的SSH? 如果直接ssh工作,那么它的jsch。 用基于Linux的ssh服务器试试jsch。 如果jsch工作,那么它是FreeSshd问题。
这是一个编码问题,加上缺少终端仿真。
SSH守护程序希望与理解终端控制序列的设备( [1;1H
字符串,实际上是一个ESC
字符前面))进行通信。 你的程序不提供终端仿真,所以你看到原始转义序列。
钻石/问号字符表示您正在使用的字体不包含服务器发送的字符。 在这种情况下,它可能是重音字符。