1. java 通過ssh連接linux伺服器,怎麼登錄oracle執行sql並返回結果
mina。apache。org/sshd-project/
2. java ssh登陸交換機執行命令
第一步下載java擴展包
第二步:解壓文件把 jar包,拷貝到java的庫目錄下,我的是ubuntu14(/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext )
cp ganymed-ssh2-build210.jar /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext
第三步: 把默認賬戶修改成直接的賬戶密碼
yang@yang:~/Downloads/java/ganymed-ssh2-build210/examples$ cat Basic.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class Basic
{
public static void main(String[] args)
{
String hostname = "127.0.0.1";
String username = "user";
String password = "password";
try
{
Connection conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
Session sess = conn.openSession();
sess.execCommand("uname -a && date && uptime && who");
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);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
System.exit(2);
}
}
}
第四步: 編譯 javac Basic.java && java Basic
Here is some information about the remote host:
Linux yang 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
2014年 05月 03日 星期六 17:26:00 CST
17:26:00 up 6:09, 4 users, load average: 0.15, 0.21, 0.23
yang :0 2014-05-03 11:17 (:0)
yang pts/2 2014-05-03 16:34 (:0)
yang pts/26 2014-05-03 17:13 (:0)
yang pts/27 2014-05-03 17:24 (:0)
ExitCode: 0
3. 如何使用java通過ssh的方式登錄遠程伺服器執行命令並返回結果
讓用戶輸入要執行的命令,接收端會認為它是密碼,應該會提示密碼錯誤之類的吧?獲取這個信息,提醒用戶輸入密碼。
4. ssh2執行遠程命令查詢which java異常
編譯的時候 javac ExceptionTest.java
通過
執行是 用
java ExceptionTest a aa a
我剛才試過了
列印
C:\>java ExceptionTest
請你執行其它命令
C:\>java ExceptionTest a aa a
aaaa
這是因為你的參數個數不夠的關系
java ExceptionTest 後面要代3個參數 否則會拋除異常
你用
catch(Exception e){
System.out.print("請你執行其它命令");
}
接住異常後 列印 "請你執行其它命令"
5. java ganymed-ssh2,session 執行多條命令,最好可以在前一條的基礎上,執行下一條。
多行命令用分好隔開就行了! 如「cd /home;ls -l」
6. java使用ssh遠程連接Linux並執行命令,可以終止進程,但是無法開啟
ps-eopid,cmd|grep程序的名稱獲得其pidkillpid或者killall程序名稱
7. java SSH遠程到linux 執行本地的腳本
scp file yonghuming@伺服器 :/路徑
把本地文件 file 傳送到 伺服器 的 /路徑 下。
然後就可以遠程執行了。
8. Java Linux遠程調用win執行UI
java通過winrm4j遠程連接win執行命令
在Linux /UNIX/WINDOWS系統中,一般通過遠程連接的方式在遠端執行腳本命令或者其他,是通過SSH或者Telnet。筆者之前寫過幾遍運用JAVA使用SSH或者TELNET連接操作系統執行命令的博客。但這些協議之間存在的差別的。
在LINUX、UNIX系統中一般通過SSH協議來登錄、執行命令;
而在Windows操作系統中,由於沒有自帶SSH協議,一般通過Telnet協議去登錄、執行命令;但是Telnet服務默認是不開啟的。所以在大規模環境中,操作比較麻煩。另外Telnet協議存在安全問題。
如果不需要執行命令,而是通過遠程桌面的形式來操作windows,可以使用RDP協議,java有一個開源的項目properJavaRDP,可以在web頁面或者GUI形式提供實現方案。
9. java 怎麼使用sshbase 和遠程機器進行交互
在本地使用 ssh $RemoteNode <cmd> 可以在執行遠程機器上的命令,例如 ssh user@node ls /local 會執行遠程機器上的 ls /local 命令,如果想在遠程機器上連續執行多條命令,可以用單引號或者雙引號將這些命令括起來,
例如:ssh user@node "cd /local; pwd;ls"
如果想在本地啟動遠程機器上的命令後就返回來,可以這樣 ssh user@node " /local/x.sh 1>/dev/null 2>&1 & "
注意如果沒有「」,例如 ssh user@node cd /local ; ls 則 ls 只會執行 cd /local 命令,ls命令在本地執行,加了雙引號或者單引號,則被括起來的命令被當做ssh命令的一個參數,所以會在遠程連續執行。
單引號和雙引號在ssh命令中的區別:
以一個例子來說明問題,
假設本地機器上配置了JAVA環境變數,在本地執行 echo $JAVA_HOME=/opt/jdk
假若我想查看遠程機器上的JAVA環境變數,則只能使用單引號了,ssh user@node ' echo $JAVA ', 則是' ' 中的$JAVA不會被shell解析,而是當做一個字元串,此時參數 echo $JAVA 傳遞給了 ssh;
如果我們使用 ssh user@node 」 echo $JAVA ",則 shell 首先會解析$JAVA,得到它的值,則該命令就變成了 ssh user@node ' echo /opt/jdk ' 了