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 ' 了