Java中通过jsch来连接远程服务器执行linux命令_java

有时候你可能需要通过代码来控制执行linux命令实现某些功能。

针对这类问题可以使用JSCH来实现,具体代码如下:

public class CogradientImgFileManager{
private static final Logger log = LoggerFactory.getLogger(CogradientImgFileManager.class);
private static ChannelExec channelExec;
private static Session session = null;
private static int timeout = 60000;
// 测试代码
public static void main(String[] args){
try{
versouSshUtil("10.8.12.189","jmuser","root1234",22);
runCmd("java -version","UTF-8");
}catch (Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 连接远程服务器
* @param host ip地址
* @param userName 登录名
* @param password 密码
* @param port 端口
* @throws Exception
*/
public static void versouSshUtil(String host,String userName,String password,int port) throws Exception{
log.info("尝试连接到....host:" + host + ",username:" + userName + ",password:" + password + ",port:"
+ port);
JSch jsch = new JSch(); // 创建JSch对象
session = jsch.getSession(userName, host, port); // 根据用户名,主机ip,端口获取一个Session对象
session.setPassword(password); // 设置密码
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config); // 为Session对象设置properties
session.setTimeout(timeout); // 设置timeout时间
session.connect(); // 通过Session建立链接
}
/**
* 在远程服务器上执行命令
* @param cmd 要执行的命令字符串
* @param charset 编码
* @throws Exception
*/
public static void runCmd(String cmd,String charset) throws Exception{
channelExec = (ChannelExec) session.openChannel("exec");
channelExec.setCommand(cmd);
channelExec.setInputStream(null);
channelExec.setErrStream(System.err);
channelExec.connect();
InputStream in = channelExec.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, Charset.forName(charset)));
String buf = null;
while ((buf = reader.readLine()) != null){
System.out.println(buf);
}
reader.close();
channelExec.disconnect();
}
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jsch执行命令
远程服务器命令
jsch执行shell命令、jsch 执行多个命令、jsch 执行多条命令、jsch执行命令、jsch执行交互命令,以便于您获取更多的相关知识。

时间: 2024-08-04 08:57:15

Java中通过jsch来连接远程服务器执行linux命令_java的相关文章

tomcat-JAVA连接远程服务器执行shell脚本启动TOMCAT权限问题

问题描述 JAVA连接远程服务器执行shell脚本启动TOMCAT权限问题 JAVA本地连接远程linux服务器执行shell脚本提示:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program 注:脚本在服务器可以运行,连接用的也是root账户,是不是权限问题,还是其他

远程连接-本地连接远程服务器数据库的问题

问题描述 本地连接远程服务器数据库的问题 本地应用phpstudy搭建的,php访问数据库正常.远程连接出问题.空间和数据库是申请万网的.我扫了一下数据库服务地址发现3306端口没有开放.请问:1,我是不是必须要联系运营商开放3306端口?2,我网站后台是linux系统,数据库服务器和后台并非一个ip地址..所以我不清楚的是php中连接数据库会因为操作系统不同而致使访问程序不同吗?3,我看了一些关于数据库授权的材料但是不深入,请问授权能够解决""连接不上服务器响应超时"&qu

在dos下如何远程连接数据库?连接远程服务器的数据库还需要在本机装数据库么?

问题描述 在dos下如何远程连接数据库?连接远程服务器的数据库还需要在本机装数据库么? 那位大神指导下如何在dos下远程连接数据库?我感觉不用再本地装了啊,求大神指导 解决方案 一.连接MYSQL. 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中

rmi 连接远程服务器 取access数据库

问题描述 rmi 连接远程服务器 取access数据库 5C 前提 : 外網 的工程 取 ------------------------內網的access 數據庫的數據.1.同一网段的局域网 连接 可以用, 能取到数据 2.外网连接 内网,我做了端口映射 具体 代码如下: 我先問問 是我少些了什麼了么? 沒用過rmi技術. 端口8162 是內網端庫映射,給外網取數據用的 String s1;String s2;ArrayList pagList = new ArrayList();Page p

sql server里连接远程服务器,并进行创建和删除新数据库

sql server里连接远程服务器,并进行创建和删除新数据库教程 一.创建新库 /* 测试 在sql2005中通过查询分析器,连接到sql2000,并创建了 tmpdb 库:成功 p_CreateDB 'tmpdb1','data','sa','sa' */ -----------------------创建存储过程开始-------------------- if object_id('p_CreateDB') is not null drop procedure p_CreateDB go

securecrt-secureCRT连接远程服务器总是提示密码错误

问题描述 secureCRT连接远程服务器总是提示密码错误 我刚刚安装破解了secureCRT,相连接远程服务器,修改数据库表空间,但是在连接的时候,明明密码是对的,但是总显示密码错误,password authentication failed. please verify that the username and password are correct.请问我该怎么办啊,我记得我第一次写连接信息时点了一个什么once,然后就没有了,接下来我每次连接就算重新填写也没有那个东西了,我该怎么办

java中哪些变量应该写在服务器,哪些变量应该写在客户端

问题描述 java中哪些变量应该写在服务器,哪些变量应该写在客户端 java中哪些变量应该写在服务器,哪些变量应该写在客户端 客户端的变量和服务器端的变量是一一对应的吗 解决方案 服务器和客户端是两个程序,甚至不是一种语言,和变量没有什么关系.一般来说,服务器放敏感的数据,比如用户账户密码,充值余额之类的.客户端放相对不敏感的数据,比如说用户设置,上次登录的用户名等等. 你一个完整的系统,两者当然是相关的. 解决方案二: 客户端用到的变量写在客户端 服务端用到的变量写在服务端

使用CRT工具连接weblogic 服务器,相关命令

问题描述 使用CRT工具连接weblogic 服务器,相关命令 使用CRT工具连接weblogic 服务器,备份某个文件,应如何操作

Java程序执行Linux命令

java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: [plain] view plaincopyprint? ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程,并返回 Process 子类的一个实例,   该实例可用来控制进程并获得相关信息.Process 类提供了执行从进程输入.执行输出到进程.等待进程完成.   检查进程的退出状态以及销毁(杀掉)进程的方法.   创建进程的方法可能无法