Java 프로그램을 통해 내 Linux 서버에서 SSH를 수행하고 있는데, 쉘 스크립트와 같은 명령을 실행할 수 있습니다. 하지만 문제는 내가 예 또는 아니요 중에서 선택할 수있는 옵션을 제공하는 특정 셸 스크립트를 실행할 때마다입니다. 이제는 Java 콘솔에서 예를 선택하고 있지만 실제로는 Linux 서버와 상호 작용하지 않습니다. 자바 프로그래밍을 통해이 직업을 수행하는 방법? 코드 Spake가 있다면 공유하십시오. 나는 SSH를하는 것에 대한 나의 코드를 줄이고있다.Java 프로그램에서 SSH를 통해 상호 작용할 수 없습니다.
String arr1[]=new String[arr.length];
ReadConfig rc=new ReadConfig();
rc.readConfig();
hostname=rc.hostname;
username=rc.username;
password=rc.password;
for(int i=0;i<arr.length;i++)
{
arr1[i]= arr[i];
System.out.println("the array value "+arr1[i]+" "+i);
}
try{
String com=arr1[5].toString().trim();
System.out.println(" "+com);
/* Create a connection instance */
conn = new Connection(hostname);
/* Now connect */
conn.connect();
/* Authenticate.
* If you get an IOException saying something like
* "Authentication method password not supported by the server at this stage."
* then please check the FAQ.
*/
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
/* Create a session */
sess = conn.openSession();
try{
sess.execCommand(com);
//obj.append("Pass");
}catch(Exception e){
//obj.append("Fail");
}
//Session sess1 = conn.openSession();
System.out.println("Here is some information about the remote host:");
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
/* Show exit status, if available (otherwise "null") */
System.out.println("ExitCode: " + sess.getExitStatus());
}catch (Exception e) {
// TODO: handle exception
}finally{
/* Close this session */
//obj.close();
sess.close();
/* Close the connection */
conn.close();
}
Ganymed-SSH2를 사용하는 것 같습니다. 그것이 무엇이든 당신은 질문에서 그렇게 말해야합니다. 그러나 셸 스크립트가 콘솔에서 입력을 얻으려고 무언가를 수행하면 실제로는 아무 것도 할 수 없습니다. – EJP
예 ganymade ssh를 사용하고 있지만 Linux 서버와 대화식으로 만드는 방법은 무엇입니까? – user993158