Java中經由過程jsch來銜接長途辦事器履行linux敕令。本站提示廣大學習愛好者:(Java中經由過程jsch來銜接長途辦事器履行linux敕令)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中經由過程jsch來銜接長途辦事器履行linux敕令正文
有時刻你能夠須要經由過程代碼來掌握履行linux敕令完成某些功效。
針對這類成績可使用JSCH來完成,詳細代碼以下:
public class CogradientImgFileManager{ private static final Logger log = LoggerFactory.getLogger(CogradientImgFileManager.class); private static ChannelExec channelExec; private static Session session = null; private static int timeout = 60000; // 測試代碼 public static void main(String[] args){ try{ versouSshUtil("10.8.12.189","jmuser","root1234",22); runCmd("java -version","UTF-8"); }catch (Exception e){ // TODO Auto-generated catch block e.printStackTrace(); } } /** * 銜接長途辦事器 * @param host ip地址 * @param userName 登錄名 * @param password 暗碼 * @param port 端口 * @throws Exception */ public static void versouSshUtil(String host,String userName,String password,int port) throws Exception{ log.info("測驗考試銜接到....host:" + host + ",username:" + userName + ",password:" + password + ",port:" + port); JSch jsch = new JSch(); // 創立JSch對象 session = jsch.getSession(userName, host, port); // 依據用戶名,主機ip,端口獲得一個Session對象 session.setPassword(password); // 設置暗碼 Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); // 為Session對象設置properties session.setTimeout(timeout); // 設置timeout時光 session.connect(); // 經由過程Session樹立鏈接 } /** * 在長途辦事器上履行敕令 * @param cmd 要履行的敕令字符串 * @param charset 編碼 * @throws Exception */ public static void runCmd(String cmd,String charset) throws Exception{ channelExec = (ChannelExec) session.openChannel("exec"); channelExec.setCommand(cmd); channelExec.setInputStream(null); channelExec.setErrStream(System.err); channelExec.connect(); InputStream in = channelExec.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, Charset.forName(charset))); String buf = null; while ((buf = reader.readLine()) != null){ System.out.println(buf); } reader.close(); channelExec.disconnect(); } }