如果命令有一些错误,JSch shell通道不会响应失败消息

时间:2017-08-21 13:15:15

标签: shell jsch

我正在编写基于JSch库的SSH轮。我使用shell频道和setPty(false)来获得对它的更多控制并确保响应是干净的消息。代码用法很简单,因为这足以满足主题:

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelShell;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class JShellTest {
    public static void main(String[] arg){
        try{
            JSch jsch=new JSch();

            //jsch.setKnownHosts("/home/foo/.ssh/known_hosts");
            Session session=jsch.getSession("lorancechen", "192.168.1.149", 22);

            session.setPassword(" ");
            session.setConfig("StrictHostKeyChecking", "no");

            //session.connect();
            session.connect(30000);   // making a connection with timeout.

            Channel channel=session.openChannel("shell");

            // Enable agent-forwarding.
            ((ChannelShell)channel).setPty(false);
            channel.setInputStream(System.in);
            channel.setOutputStream(System.out);

            channel.connect(60*1000);
        }
        catch(Exception e){
            System.out.println(e);
        }

    }

}

这里有什么问题?
当我输入lll时,它是一个不允许的命令,结果响应没有 与ssh -T foo@bar比较,它将是响应-bash: line 2: lll: command not found

那么,如果命令失败,我怎样才能让JSch响应与ssh -T foo@bar相同的结果?
感谢。

0 个答案:

没有答案