1. 程式人生 > >java遠端呼叫linux上jar包

java遠端呼叫linux上jar包

首先在遠端伺服器上編寫一個測試指令碼test.sh,並賦予可執行許可權:chmod +x test.sh

#!/bin/bash
echo $1
$1是指令碼傳進來的第一個引數,現在列印一下傳進來的第一個引數。

在pom中新增依賴

  1. <dependency>
  2.     <groupId>org.jvnet.hudson</groupId>
  3.     <artifactId>ganymed-ssh2</artifactId>
  4.     <version>build210-hudson-1</version>
  5. </dependency>
建立工具類
package cn.ctyun.audit.utils;
import java.io.IOException;  
import java.io.InputStream;  
import java.nio.charset.Charset;  
  
import ch.ethz.ssh2.Connection;  
import ch.ethz.ssh2.Session;

public class RemoteShellTool {
	  private Connection conn;  
	    private String ipAddr;  
	    private String charset = Charset.defaultCharset().toString();  
	    private String userName;  
	    private String password;  
	    
	    public RemoteShellTool(String ipAddr, String userName, String password,  
	            String charset) {  
	        this.ipAddr = ipAddr;  
	        this.userName = userName;  
	        this.password = password;  
	        if (charset != null) {  
	            this.charset = charset;  
	        }  
	    }  
	    
	    public boolean login() throws IOException {  
	        conn = new Connection(ipAddr);  
	        conn.connect(); // 連線  
	        return conn.authenticateWithPassword(userName, password); // 認證  
	    }  
	    
	    public boolean exec(String cmds) {  
	        InputStream in = null;  
	        String result = ""; 
	        boolean flag = false;
	        try {  
	            if (this.login()) {  
	                Session session = conn.openSession(); // 開啟一個會話  
	                session.execCommand(cmds);  
	                in = session.getStdout();  
	                result = this.processStdout(in, this.charset);  
	                session.close();  
	                conn.close(); 
	                flag = true;	            }  
	        } catch (IOException e1) {  
	            e1.printStackTrace();  
	        }  
	        return flag;  
	    }  
	    
	    public String processStdout(InputStream in, String charset) {  
	      
	        byte[] buf = new byte[1024];  
	        StringBuffer sb = new StringBuffer();  
	        try {  
	            while (in.read(buf) != -1) {  
	                sb.append(new String(buf, charset));  
	            }  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        }  
	        return sb.toString();  
	    }  
	  

	    public static void main(String[] args) {  
	  
	        RemoteShellTool tool = new RemoteShellTool("hdp03", "root",  
	                "hadoop", "utf-8");  
	        
boolean exec = tool.exec("/root/apps/jdk1.7.0_67/bin/java -jar AuditService.jar "); System.out.print(exec); } }
注意:如果要執行jar命令需要寫jdk的全路徑,否則會找不到java的環境變數!

如果不想輸入密碼,可以參考下面的文章

相關推薦

java遠端呼叫linuxjar

首先在遠端伺服器上編寫一個測試指令碼test.sh,並賦予可執行許可權:chmod +x test.sh#!/bin/bash echo $1$1是指令碼傳進來的第一個引數,現在列印一下傳進來的第一個引數。在pom中新增依賴<dependency>    <

java遠端呼叫linux的命令或者指令碼

   Java通過SSH2協議執行遠端Shell指令碼(ganymed-ssh2-build210.jar)   使用步驟如下: 1.導包 官網下載: http://www.ganymed.ethz.ch/ssh2/ maven座標: [java] view plain copy print?

Elasticsearch5.0在java呼叫需要的jar

pom.xml檔案 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><vers

java呼叫openvc時jar和dll檔案的引入

openvc裡面的jar包和dll檔案引入 剛開始學習影象處理的時候,選擇了openvc然後下載了安裝了。如圖下然後找了半天也沒找到要的jar包和dll檔案。在這裡分享一下,因為找不到我打算去csdn裡面下載的,結果要積分很是煩人。 本人是java開發的就匯入j

Linuxjar形式啟動java專案

1、安裝Eclipse打包外掛Fat Jar 用以打jar  Fat Jar Eclipse Plug-In是一個可以將Eclipse Java Project的所有資源打包進一個可執行jar檔案的小

本地java連結遠端伺服器Linuxredis出錯解決方案

在redis.conf檔案中bind 127.0.0.1加上#號 在redis.conf檔案中把 #requirepass 的#號去掉,在後面加上鍊接redis-server的密碼 在本

JAVA-通過介面讀取本地jar,並呼叫其中實現了介面的類中的方法

URLClassLoader classLoader = new URLClassLoader(new URL[]{new URL("jar 本地路徑,例如:file:D:/project/inputsplit-1.0-SNAPSHOT.jar")}, Thread.currentThread().ge

Linux執行jar報錯:Exception in thread "main" java.lang.UnsupportedClassVersionError: ...

[[email protected] java]# java -jar socketTest.jarException in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot

redis在linux中安裝步驟以及java遠端呼叫redis

redis在linux中安裝步驟: 1.安裝準備環境:安裝gcc yum install gcc-c++ 2.下載redis安裝包 wget http://download.redis.io/releases/redis-5.0.0.tar.gz 3.解壓redis tar

java遠端呼叫ssh2執行Linux命令

java SSH2遠端登入Linux服務執行命令 前一段時間工作中用到了java遠端呼叫Linux伺服器,執行相關命令,因為比較常用,故此,在部落格中記錄下來。其中用到了ganymed-ssh2這個jar包,可以在http://www.ganymed.ethz

java本地呼叫cmd,shell命令,遠端呼叫Linux執行命令方法總結

有時候經常會碰到需要遠端呼叫Linux或者本地呼叫Linux或者本地呼叫cmd的一些命令,最近小結了一下這幾種用法 本地呼叫cmd命令 @Test public void testCmd()throws Exception{

IntelliJ IDEA java項目導入jar,打jar

選項 可能 version make set 最好 tar project 沒有 一、導入 1、java項目在沒有導入該jar包之前,如圖: 2、點擊 File -> Project Structure(快捷鍵 Ctrl + Alt + Shift + s),

(轉)IntelliJ IDEA java項目導入jar,打jar

標簽 blank 窗口 ava setting structure 綠色 target bsp 以下為轉載原文:https://www.cnblogs.com/yulia/p/6824058.html 一、導入 1、java項目在沒有導入該jar包之前,如圖:

nodejs連線Access資料庫,出現Error: Spawn C:\WINDOWS\SysWOW64\cscript.exe error Java專案生成可執行jar、exe檔案以及在Windows下的安裝檔案

因為集成了第三方的資料庫,所以需要獲取資料庫的資料 使用 var connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+config.id_path+';');  

mac通過samba伺服器遠端管理linux檔案

1.下載及安裝:     yum -y install samba    我的版本是CentOs7,使用的yum安裝,可以解決很多的包依賴關係,引數y,設定詢問全部yes。     2.配置samba:   &n

怎麼在Linux分析

怎麼在Linux上抓包分析 1、在Linux上抓包 例如在Ubuntu上,用命令抓包, tcpdump tcp  -i any -s0 -w desk.cap 用  sz desk.cap  把資料包匯入本地Windows   2、在windows上用w

怎麽在Linux分析

tcp src any 技術分享 包導入 shark info tcpdump 篩選 怎麽在Linux上抓包分析 1、在Linux上抓包 例如在Ubuntu上,用命令抓包, tcpdump tcp -i any -s0 -w desk.cap 用 sz desk.ca

windows下的navicat遠端連線linux的mysql

windows下的navicat遠端連線linux上的mysql 1.開放防火牆的埠號3306 vim /etc/sysconfig/iptables 2.重啟防火牆 service iptables restart 3.授權mysql遠端登入 grant all privileg

[Java] Jar2Exe,jar2工具將jar轉換成exe可執行檔案的詳細過程

[Java] Jar2Exe,jar2工具將jar包轉換成exe可執行檔案的詳細過程 軟體下載地址 連結: https://pan.baidu.com/s/1Ei39JYGpb7wyS9UkMl1GTQ 提取碼: yvkv 一、首先將程式匯出為jar包 1、在MyEcli

java遠端連線linux,執行指令碼命令

1.maven的POM.xml需要配置包 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifac