# 本地調用
使用JDK自帶的RunTime類和Process類實現
public static void main(String[] args){ Process proc = RunTime.getRunTime().exec("cd /home/winnie; ls;") // 標准輸入流(必須寫在 waitFor 之前) String inStr = consumeInputStream(proc.getInputStream()); // 標准錯誤流(必須寫在 waitFor 之前) String errStr = consumeInputStream(proc.getErrorStream()); int retCode = proc.waitFor(); if(retCode == 0){ System.out.println("程序正常執行結束"); } } /** * 消費inputstream,並返回 */ public static String consumeInputStream(InputStream is){ BufferedReader br = new BufferedReader(new InputStreamReader(is)); String s ; StringBuilder sb = new StringBuilder(); while((s=br.readLine())!=null){ System.out.println(s); sb.append(s); } return sb.toString(); }
# 遠程調用(一)
導入ganymed-ssh2包
import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; public static void main(String[] args){ String host = "210.38.162.181"; int port = 22; String username = "root"; String password = "root"; // 創建連接 Connection conn = new Connection(host, port); // 啟動連接 conn.connection(); // 驗證用戶密碼 conn.authenticateWithPassword(username, password); Session session = conn.openSession(); session.execCommand("cd /home/winnie; ls;"); // 消費所有輸入流 String inStr = consumeInputStream(session.getStdout()); String errStr = consumeInputStream(session.getStderr()); session.close; conn.close(); } /** * 消費inputstream,並返回 */ public static String consumeInputStream(InputStream is){ BufferedReader br = new BufferedReader(new InputStreamReader(is)); String s ; StringBuilder sb = new StringBuilder(); while((s=br.readLine())!=null){ System.out.println(s); sb.append(s); } return sb.toString(); }
# 遠程調用(二)
使用jsch實現
import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public static void main(String[] args){ String host = "210.38.162.181"; int port = 22; String username = "root"; String password = "root"; // 創建JSch JSch jSch = new JSch(); // 獲取session Session session = jSch.getSession(username, host, port); session.setPassword(password); Properties prop = new Properties(); prop.put("StrictHostKeyChecking", "no"); session.setProperties(prop); // 啟動連接 session.connect(); ChannelExec exec = (ChannelExec)session.openChannel("exec"); exec.setCommand("cd /home/winnie; ls;"); exec.setInputStream(null); exec.setErrStream(System.err); exec.connect(); // 消費所有輸入流,必須在exec之后 String inStr = consumeInputStream(exec.getInputStream()); String errStr = consumeInputStream(exec.getErrStream()); exec.disconnect(); session.disconnect(); } /** * 消費inputstream,並返回 */ public static String consumeInputStream(InputStream is){ BufferedReader br = new BufferedReader(new InputStreamReader(is)); String s ; StringBuilder sb = new StringBuilder(); while((s=br.readLine())!=null){ System.out.println(s); sb.append(s); } return sb.toString(); }