java使用ssh访问Linux的项目jscraft
一、gradle地址
// https://mvnrepository.com/artifact/com.jcraft/jsch
compile group: 'com.jcraft', name: 'jsch', version: '0.1.54'
二、远程登录实例
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader; import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session; public class SSHHelper {
/**
* 远程 执行命令并返回结果调用过程 是同步的(执行完才会返回)
*
* @param host
* 主机名
* @param user
* 用户名
* @param psw
* 密码
* @param port
* 端口
* @param command
* 命令
* @return
*/
public static String exec(String host, String user,String psw, int port,String command) {
String result = "";
Session session = null;
ChannelExec openChannel = null;
try {
JSch jsch = new JSch();
session = jsch.getSession(user, host, port);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(psw);
session.connect();
openChannel = (ChannelExec) session.openChannel("exec");
openChannel.setCommand(command);
int exitStatus = openChannel.getExitStatus();
System.out.println(exitStatus);
openChannel.connect();
InputStream in = openChannel.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String buf = null;
while ((buf = reader.readLine()) != null) {
// result+= new String(buf.getBytes("gbk"),"UTF-8")+" <br>\r\n";
result += new String(buf.getBytes("gbk"), "UTF-8") + "\r\n";
}
} catch (JSchException | IOException e) {
result += e.getMessage();
} finally {
if (openChannel != null && !openChannel.isClosed()) {
openChannel.disconnect();
}
if (session != null && session.isConnected()) {
session.disconnect();
}
}
return result;
} public static void main(String args[]) {
// String exec = exec("192.168.25.128", "root", "password", 22, "sleep 10;ls;");
// String exec = exec("192.168.25.128", "root", "password", 22, "fs_cli -x
// status");
// String exec = exec("172.18.4.114", "root", "root01", 22, "fs_cli -x status");
String exec = exec("172.18.4.114", "root", "assr", 22,
"sshpass -p 'root01' scp /home/test.txt root@172.18.4.125:/home");
System.out.println("reply:\n" + exec);
}
}
三、一些涉及二次密码输入的情况
引入新的项目sshpass。
1. 下载及安装
$ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
$ tar -xvf sshpass.tar.gz
$ cd sshpass-1.06
$ ./configure
# sudo make install
2. 使用示例
sshpass -p 'root123456' scp /home/test.txt root@192.168.4.125:/home
java使用ssh访问Linux的项目jscraft的更多相关文章
- java使用ssh连接Linux并执行命令
方式1:通过设置账号密码和链接地址 maven pom.xml配置: <dependency> <groupId>com.jcraft</groupId ...
- java使用SSH连接Linux系统
SSH连接linux系统使我们在开发项目中常用到的,现在留下来,做个记录 package com.log; import java.io.BufferedReader; import java.io. ...
- .Net使用SSH.NET通过SSH访问Linux主机
使用了SSH.NET库,添加引用dll至项目,以下代码显示了点击按钮后SSH链接Linux主机执行命令并返回命令执行结果 protected void btnExcute_Click(object s ...
- windows10 通过ssh访问 linux
安装openssh服务 Win10其实自带OpenSSH 没有的话,点击上面的添加找到并安装 在服务里设置对应服务开机启动 添加服务器到已知主机 ssh-keygen -R 你的服务器ip 连接Lin ...
- ITerm2下使用ssh访问Linux
通常情况下,iTerm2访问远程Linux使用ssh,与Termial基本一样,方法如下: ssh <用户名>@<ip> 然后输入访问的密码即可.当然还有的时候需要指定访问端口 ...
- 用Putty通过SSH访问Linux服务器
1,sudo apt-get install ssh 2,sudo service ssh restart 3,重启ssh成功后,就可以直接用Putty访问服务器.
- java实现ssh登录linux服务器并下发命令
依赖jar包:jsch-0.1.55.jar commons-io-2.5.jar import com.jcraft.jsch.ChannelExec; import com.jcraft.js ...
- Java ssh 访问windows/Linux
Java ssh 访问windows/Linux 工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令.原来采用的方法是直接调用ssh命令或者调用pli ...
- 搭建Java服务器,并且实现远程安全访问linux系统
1.通过ssh实现安全远程访问linux系统 ssh :secure shell 加密: 1. 对称加密 (加密密钥与解密密钥相同) des ...
随机推荐
- 使用baksmali及smali修改apk并打包
使用baksmali及smali修改apk并打包 工具的下载,请自行google. 有时候使用apktool反编译apk修改Smali文件之后再进行build会出现错误,这种情况下可以换一个更高版本的 ...
- javascript格式化json显示
// Example usage: http://jsfiddle.net/q2gnX/ var formatJson = function(json, options) { var reg = nu ...
- JSP基本的语法、3个编译指令、7个动作指令、9个内置对象
一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段.使用jsp开发的应用程序能够跨 ...
- sqlite可视化工具推荐
软件名称:SQLite Expert 下载地址:http://www.sqliteexpert.com/download.html 下载免费的Personal版本就可以了 我试用了SQLite Exp ...
- Succession
Description The king in Utopia has died without an heir. Now several nobles in the country claim the ...
- acm2024
/** * C语言合法标识符 */ import java.util.*; public class acm2024 { public static void main(String[] args ...
- 采集的时候,列表的编码是gb2312,内容页的编码却是UTF-8,这种网站怎么采集?
采集的时候,列表的编码是gb2312,内容页的编码却是UTF-8,这种网站怎么采集? 采集的时候,列表的编码是UTF-8,内容页的编码却是gb2312,这种网站怎么采集? 这种情况怎么解决呢? 哈哈哈 ...
- mac安装热更新插件
查看.修改或者执行某些命令需要root用户的权限,如果不想直接切换到root用户,就可以使用sudo命令.sudo命令用于针对单个命令授予临时权限.sudo仅在需要时授予用户权限,减少了用户因为错误执 ...
- vue Watcher分类 computed watch
1.Watcher构造函数源码部分代码 if (options) { this.deep = !!options.deep this.user = !!options.user this.lazy = ...
- 修复eclipse build-helper-maven-plugin 异常
安装 help --> install new http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-buildhelper/0.15. ...