JSF를 사용하여 TFTP 서버에 라우터의 구성을 보내려고합니다. Main 클래스로 코드를 테스트 할 때 작동하지만이 코드를 버튼 액션에 통합하려고하면 작동하지 않습니다.JSch에서 SSH를 통해 실행되는 명령에 입력/부속 명령 제공 JSF 사용
11 : 53 : 25,279 INFO [표준 출력 (기본 작업-11) 설립 연결 ...
11시 53분 이이 출력입니다
public Void SendConfigViaTftp(Router r) {
int port=22;
String name = r.getRouterName();
String ip=r.getRouterIP();
String password =r.getRouterPassword();
try
{
JSch jsch = new JSch();
Session session = jsch.getSession(name, ip, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
System.out.println("Connection established.");
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
InputStream in = channelExec.getInputStream();
channelExec.setCommand("enable");
channelExec.setCommand("copy run tftp:");
OutputStream out = channelExec.getOutputStream();
channelExec.connect();
System.out.println("Copy.");
out.write(("192.168.18.1 \n").getBytes());
System.out.println("IP.");
out.write(name.getBytes());
System.out.println("name.");
out.flush();
out.close();
session.disconnect();
return true;
}
catch(Exception e){System.err.print(e);
}
}
내 세션 빈 코드 : 25,516 정보 [표준 출력] (기본 작업 -11) 연결이 설정되었습니다.
11 : 53 : 25,578 정보 [표준 출력] (기본 작업 -11) 복사.
11 : 53 : 25,578 정보 [표준 출력] (기본 작업 -11) IP.
11 : 53 : 25,578 정보 [표준 출력] (기본 작업 -11) 이름입니다.
이
은<p:commandButton value="Sauvegarder(TFTP)" action="#{ListBean.sauvegardeTFTP(rtr)}" update=":routeurs" ><f:ajax disabled="true"/></p:commandButton>
나는 문제가 내 JSF 응용 프로그램의 OutputStream에 문제가 있음을 확신 내 버튼의 코드입니다. 어떤 사람이 나를 도울 수 있습니까?
그것은 때 작동 난 기본 자바 클래스에서 그것을 테스트 버튼을 행동에 통합 할 때 그것을 테스트합니다. 설명에, 그것은 out.print()를 포함하는 줄 주석 것 같습니다. 시스템은 이러한 행을 실행하지 않으며 오류를 표시하지 않습니다. – user6624302
그러나 우연의 일치 일 수 있습니다. 연결이 얼마나 빨리 종료되는지에 따라 다릅니다. 간단한 경쟁 조건. 적어도 내 제안을 시도 했니? –
나는 시도했다. 그러나 여기 나는 출력의 내용을 읽는 것에 신경 쓰지 않았다. 단지 명령을 삽입하고 싶다. while ((line = reader.readLine())! = null)을 사용하면 출력 내용을 복구 할 수 있습니다. 여기에있는 문제는 Jsf 출력 스트림이 나를 위해 작동하지 않습니다. – user6624302