欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析

這篇文章主要介紹了基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

專注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)欽北免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

1、SSH命令

SSH 為 Secure Shell 的縮寫,由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定;SSH 為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。SSH 是較可靠,專為遠程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統(tǒng)上的一個程序,后來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網(wǎng)絡(luò)中的漏洞。SSH客戶端適用于多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺,都可運行SSH。

實際工作中,我們經(jīng)常使用客戶端工具(比如:Secure CRT,Xshell,MobaXterm等)SSH到主機上,執(zhí)行一些操作命令。

如何使用Java語言實現(xiàn)SSH 連接主機,并執(zhí)行Shell命令呢?

2、Java 實現(xiàn) SSH命令

1)代碼實現(xiàn)如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;

import org.apache.commons.lang3.StringUtils;

import ch.ethz.ssh3.Connection;
import ch.ethz.ssh3.Session;
import ch.ethz.ssh3.StreamGobbler;


public class SshUtil {
 private static String DEFAULT_CHAR_SET = "UTF-8";
 private static String tipStr = "=======================%s=======================";
 private static String splitStr = "=====================================================";
 
 /**
  * 登錄主機
  * @return
  *  登錄成功返回true,否則返回false
  */
 public static Connection login(String ip, String userName, String password){
  boolean isAuthenticated = false;
  Connection conn = null;
  long startTime = Calendar.getInstance().getTimeInMillis();
  try {
   conn = new Connection(ip);
   conn.connect(); // 連接主機

   isAuthenticated = conn.authenticateWithPassword(userName, password); // 認證
   if(isAuthenticated){
    System.out.println(String.format(tipStr, "認證成功"));
   } else {
    System.out.println(String.format(tipStr, "認證失敗"));
   }
  } catch (IOException e) {
   System.err.println(String.format(tipStr, "登錄失敗"));
   e.printStackTrace();
  }
  long endTime = Calendar.getInstance().getTimeInMillis();
  System.out.println("登錄用時: " + (endTime - startTime)/1000.0 + "s\n" + splitStr);
  return conn;
 }
 
 /**
  * 遠程執(zhí)行shell腳本或者命令
  * @param cmd
  *  即將執(zhí)行的命令
  * @return
  *  命令執(zhí)行完后返回的結(jié)果值
  */
 public static String execute(Connection conn, String cmd){
  String result = "";
  Session session = null;
  try {
   if(conn != null){
    session = conn.openSession(); // 打開一個會話
    session.execCommand(cmd);  // 執(zhí)行命令
    result = processStdout(session.getStdout(), DEFAULT_CHAR_SET);

    //如果為得到標(biāo)準(zhǔn)輸出為空,說明腳本執(zhí)行出錯了
    if(StringUtils.isBlank(result)){
     System.err.println("【得到標(biāo)準(zhǔn)輸出為空】\n執(zhí)行的命令如下:\n" + cmd);
     result = processStdout(session.getStderr(), DEFAULT_CHAR_SET);
    }else{
     System.out.println("【執(zhí)行命令成功】\n執(zhí)行的命令如下:\n" + cmd);
    }
   }
  } catch (IOException e) {
   System.err.println("【執(zhí)行命令失敗】\n執(zhí)行的命令如下:\n" + cmd + "\n" + e.getMessage());
   e.printStackTrace();
  } finally {
   if (conn != null) {
    conn.close();
   }
   if (session != null) {
    session.close();
   }
  }
  return result;
 }

 /**
  * 解析腳本執(zhí)行返回的結(jié)果集
  * @param in 輸入流對象
  * @param charset 編碼
  * @return
  *  以純文本的格式返回
  */
 private static String processStdout(InputStream in, String charset){
  InputStream stdout = new StreamGobbler(in);
  StringBuffer buffer = new StringBuffer();
  try {
   BufferedReader br = new BufferedReader(new InputStreamReader(stdout, charset));
   String line = null;
   while((line = br.readLine()) != null){
    buffer.append(line + "\n");
   }
  } catch (UnsupportedEncodingException e) {
   System.err.println("解析腳本出錯:" + e.getMessage());
   e.printStackTrace();
  } catch (IOException e) {
   System.err.println("解析腳本出錯:" + e.getMessage());
   e.printStackTrace();
  }
  return buffer.toString();
 }

 public static void main(String[] args){
  String ip = "192.168.123.234"; // 此處根據(jù)實際情況,換成自己需要訪問的主機IP
  String userName = "root";
  String password = "password";
  Connection conn = SshUtil.login(ip, userName, password);

  String cmd = "cd /home/miracle&&pwd&&ls&&cat luna.txt";
  String result = SshUtil.execute(conn, cmd);
  System.out.println(splitStr + "\n執(zhí)行的結(jié)果如下: \n" + result + splitStr);
 }
}

2)運行結(jié)果如下:

=======================認證成功=======================
登錄用時: 0.859s
=====================================================
【執(zhí)行命令成功】
執(zhí)行的命令如下:
cd /home/miracle&&pwd&&ls&&cat luna.txt
=====================================================
執(zhí)行的結(jié)果如下: 
/home/miracle
luna.txt
Hello, I'm SshUtil.
Nice to meet you.^_^
=====================================================

3)pom.xml 引用添加如下:

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
  <dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>3.9</version>
  </dependency>

  <!-- ssh -->
  <dependency>
   <groupId>ch.ethz.ganymed</groupId>
   <artifactId>ganymed-ssh3</artifactId>
   <version>262</version>
  </dependency>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章名稱:基于Java實現(xiàn)ssh命令登錄主機執(zhí)行shell命令過程解析
網(wǎng)站鏈接:http://aaarwkj.com/article10/gpgsgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
精品人妻av区天天看片| 日本a级免费大片网站| 日本高清一区二区不卡视频| 最新日韩一区二区在线| 青青草国产成人自拍视频在线观看| 亚洲综合一区二区三区四区在线| 91在线国产精品视频| 亚洲精品色播一区二区| 黄色录像免费一内片一级| 青青草成人一区二区三区| 麻豆深夜激情在线观看| 国内精品久久久国产盗摄| 欧美日韩精品国产精品| 久久精品国产一区二区| 欧美日韩一区二区三区激情| 日韩视频精品一区二区| 成年人午夜看片免费网站| 91亚洲婷婷国产综合精品| 亚洲天堂欧美日韩一区| 国产精品日韩精品在线| 国产男女做爰在线视频| 精品久久久久久久久极品| 亚洲视频一区二区精品| 蜜桃视频手机在线观看| 欧美日韩加勒比综合在线| 日韩一区二区精品网站| 久久精品国产欧美日韩| 亚洲欧美日韩制服另类| 中文字幕乱码亚洲中文在线| av天堂资源地址在线观看| 欧美日韩在线一区二区| 在线成人影院中文字幕| 青青草原这里只有精品| 熟妇高潮一区二区三区| 一区二区三区蜜桃91| 亚洲精品成人久久国产| 一区二区三区蜜桃av| 日韩人妻中文字幕乱码一区| 日本中文字幕三级专区| 日本韩国三级理伦久久久| 日本人妻系列在线播放|