10 년 동안 Java를 다시 읽으려고합니다. 내가 쓰려고하는 다른 애플 리케이션에서 JSch를 사용하여 라이브러리를 만들고 싶다. 연결은 다림질되었지만 지금은 stdin과 stdout을 사용하고 있습니다. String에서 단일 명령을 받아들이고 결과가있는 ArrayList를 반환하는 메서드를 찾고 있습니다.JSch 셸이 StringArray로 돌아갑니다.
도움이 될 것입니다.
//This vars are in the class.
private JSch _jsch;
private Session _session;
private Channel _channel;
여기에 목표는 내가 연결을 열면 내가이 방법에게 명령을 보내고 배열에 결과를 반환 할 수 있습니다 내 연결 방법
public boolean Connect() throws JSchException
{
try {
_jsch = new JSch();
_session = _jsch.getSession(_user, _hostname, _port);
_session.setPassword(_password);
_session.setConfig("StrictHostKeyChecking", "no");
_channel = _session.openChannel("shell");
//((ChannelShell)_channel).setPtyType("vt100");
_channel.setInputStream(bais);
_channel.setOutputStream(baos);
_channel.connect(3000);
}//try to connect
catch (JSchException ex)
{
throw ex;
}
return true;
}
입니다. 결과에 따라 행동하고 더 많은 명령을 보내십시오. 나는 그들이 그 앞에 오는 명령을 쌓을 때마다 매번 연결을 닫고 싶지 않습니다. 내가 찾고있는 결과를 얻기에 충분한 Inputs와 Output Streams로 작업하는 방법을 모르겠습니다. 다음 방법을 작성하는 데 도움을받을 수 있다면 감사 할 것입니다.
public List<String> ExecuteCommand (String command) {
//run command to existing connection
//Get returned lines to Array List and return the list
}
감사
멀티 라인 String (명령)을 사용하고 행의 ArrayList를 만들고 싶습니까? 그게 다야? –
꽤 많이 있습니다. 이 시점에서 Java에서 스트림을 처리하는 방법은 확실하지 않습니다. 내 목표는 다음과 같이하는 것입니다. 목록 결과 = ExecuteCommand ("ps -ef"); ps -ef는 많은 행을 반환하므로 배열이나 ArrayList로 가져 오려고합니다. –
vSteve