JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
2014-04-16 17:41
411 查看
上篇文章我编写了利用JSch实现SFTP的文件上传和下载/article/3501143.html,在本篇文章中,我将描述如何利用JSch实现执行远程SSH2主机的SHELL命令,不说了,直接上代码和详细的代码说明:
view
source
print?
利用JSch实现执行远程SSH2主机的SHELL命令,见我的博文:/article/3501144.html
view
source
01 | /** |
02 | * 利用JSch包实现远程主机SHELL命令执行 |
03 | * |
04 | * |
05 | * |
06 | * |
07 | * |
08 | * |
09 | */ |
10 | public static void sshShell(String |
11 | , int port throws Exception{ |
12 | Session null ; |
13 | Channel null ; |
14 |
15 |
16 | JSch new JSch(); |
17 |
18 | //设置密钥和密码 |
19 | if (privateKey null && ! "" .equals(privateKey)) { |
20 | if (passphrase null && "" .equals(passphrase)) { |
21 | //设置带口令的密钥 |
22 | jsch.addIdentity(privateKey, passphrase); |
23 | } else { |
24 | //设置不带口令的密钥 |
25 | jsch.addIdentity(privateKey); |
26 | } |
27 | } |
28 |
29 | if (port <= 0 ){ |
30 | //连接服务器,采用默认端口 |
31 | session |
32 | } else { |
33 | //采用指定的端口连接服务器 |
34 | session |
35 | } |
36 |
37 | //如果服务器连接不上,则抛出异常 |
38 | if (session null ) { |
39 | throw new Exception( "session ); |
40 | } |
41 |
42 | //设置登陆主机的密码 |
43 | session.setPassword(psw); //设置密码 |
44 | //设置第一次登陆的时候提示,可选值:(ask |
45 | session.setConfig( "StrictHostKeyChecking" , "no" ); |
46 | //设置登陆超时时间 |
47 | session.connect( 30000 ); |
48 |
49 | try { |
50 | //创建sftp通信通道 |
51 | channel "shell" ); |
52 | channel.connect( 1000 ); |
53 |
54 | //获取输入流和输出流 |
55 | InputStream |
56 | OutputStream |
57 |
58 | //发送需要执行的SHELL命令,需要用\n结尾,表示回车 |
59 | String "ls \n" ; |
60 | outstream.write(shellCommand.getBytes()); |
61 | outstream.flush(); |
62 |
63 |
64 | //获取命令执行的结果 |
65 | if (instream.available() 0 ) { |
66 | byte [] new byte [instream.available()]; |
67 | int nLen |
68 |
69 | if (nLen 0 ) { |
70 | throw new Exception( "network error." ); |
71 | } |
72 |
73 | //转换输出结果并打印出来 |
74 | String new String(data, 0 , nLen, "iso8859-1" ); |
75 | System.out.println(temp); |
76 | } |
77 | outstream.close(); |
78 | instream.close(); |
79 | } catch (Exception |
80 | e.printStackTrace(); |
81 | } finally { |
82 | session.disconnect(); |
83 | channel.disconnect(); |
84 | } |
85 | } |
相关文章推荐
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- JSch:纯JAVA实现远程执行SSH2主机的SHELL命令
- 纯JAVA实现远程执行SSH2主机的SHELL命令
- JAVA实现远程执行SSH2主机的SHELL命令
- java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行
- java中利用jsch执行远程命令,实现sftp
- java jsch远程执行shell脚本命令
- Java实现远程联接服务器执行shell命令
- windows 下 java程序jsch连接远程linux服务器执行shell命令
- shell脚本实现同时多台远程主机执行命令的代码分享
- java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行
- java中使用JSCH包,SFTP及SSH2文件操作及远程命令执行(改进)
- python 实现远程主机执行命令函数
- JAVA 执行 dos/shell命令的实现
- linux 使用java编写ssh登陆主机 输入密码登陆并执行命令(jsch)
- 采用JSCH实现对linux远程操作(SSH协议),实现在远程linux机器上执行相关的命令
- JAVA实现远程SSH连接linux并执行命令
- Java SSH远程执行Shell脚本实现