java操作Linux服务器可以使用专用的jar包,这里介绍使用jsch操作Linux服务器

maven 依赖

<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>

引入包以后 获取ssh连接

public static ChannelShell connectShell(Session session) {
ChannelShell shell = null;
try {
shell = (ChannelShell) session.openChannel(type_ssh);
shell.connect();

System.out.println();
System.out.println("shell resource:" + session.equals(shell.getSession()));
System.out.println("shell login ok:" + shell.getId());
System.out.println();
return shell;
} catch (Exception e) {
e.printStackTrace();
}
return shell;
}

以上获取到连接对象可以进行交互操作,在调用方法中定义接收流对象后可以交互执行命令
一下监听和发送都在一个线程中,所以开启定时任务发送命令,主进程监听消息获取
getMsg为接收消息方法
private static PrintStream commander;//定义常量   发送消息使用


BufferedReader br;
try {
OutputStream outputStream = myShellSession_.getChannelShell().getOutputStream();
InputStream inputStream = myShellSession_.getChannelShell().getInputStream();
commander = new PrintStream(outputStream, false, MyShellAndSftpUtils.ENCODING);
br = new BufferedReader(new InputStreamReader(inputStream, MyShellAndSftpUtils.ENCODING));
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
sendMsg("pwd");//定时发送消息
System.out.println("shell run , time is "+DataTimeUtils.getDataStrOut());
}
},0,DataTimeUtils.getaLong(myShellSession_.getConfigParams().getShellTime()));//立即执行 过15分执行 15分 * 60 秒 * 1000毫秒
try {
getMsg();
} catch (Exception e) {
e.printStackTrace();
}

//接收消息调用
public static void getMsg() throws Exception {
StringBuffer buffer = new StringBuffer();
String line;
boolean flag = false;
while ((line = br.readLine()) != null) {
System.out.println("line " + line);
if (line.startsWith("Starting Nmap")) {
flag = true;
}
if (flag) {
buffer.append(line);
buffer.append(MyShellAndSftpUtils.lineSeparator);
}
if (line.startsWith("****:")) {//检测返回信息的开始
flag = false;
saveDb(buffer.toString());//执行存储等逻辑
buffer.setLength(0);
}

}
}

public static void sendMsg(String msg) {
commander.println(msg);
commander.flush();
}

以上方案可以连续执行命令,但是返回的结果需要进行判断后才能进入自己的操作

java-代码操作服务器之SSH连续发送命令的更多相关文章

  1. Java代码操作zookeeper

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. Java代码操作HDFS测试类

    1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...

  3. 使用java代码操作Redis

    1导入pom.xml依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis ...

  4. java代码操作Redis

    1.导入需要的pom依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn ...

  5. Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比

    Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...

  6. 分享知识-快乐自己:java代码 操作 solr

    POM 文件: <!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> < ...

  7. 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)

    一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...

  8. java:nginx(java代码操作ftp服务器)

    1.检查是否安装了vsftpd [root@linux01 ~]# rpm -qa|grep vsftpd 2.安装vsftpd [root@linux01 ~]# yum -y install vs ...

  9. Java代码操作HDFS(在/user/root/下面創建目錄)

    1.创建HDFS目录并打成jar包 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.h ...

随机推荐

  1. Makefile基础语法

    Makefile的作用 如果没有Makefile,每次修改源代码后,如果要重新编译代码,都要输入编译命令,当源代码很多时,效率很底下. 基本格式 target: componsnts TAB rule ...

  2. 眼球3D可视化解决方案——案例详解

    医疗器械行业伴随着人类健康需求的增长而不断发展,是名副其实的朝阳行业,也是全球发达国家竞相争夺的领域. 一方面,行业门槛高,集中度低,外资企业挤占市场空间成了我国所有医疗器械行业入局者面临的共同挑战. ...

  3. python-将print内容保存到文件

    通过sys.stdout得到print输出的内容,再进行保存 import sys class Logger(object): def __init__(self, file_path: str = ...

  4. v-if和v-for哪个优先级更高?

    首先在实际开发阶段,不应该把v-if和v-for在同一个标签中使用, 在vue2中,v-for的优先级是高于v-if的,如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性 ...

  5. 你是否有一个梦想?用JavaScript[vue.js、react.js......]开发一款自定义配置视频播放器

    前言沉寂了一周了,打算把这几天的结果呈现给大家.这几天抽空就一直在搞一个自定义视频播放器,为什么会有如此想法?是因为之前看一些学习视频网站时,看到它们做的视频播放器非常Nice!于是,就打算抽空开发一 ...

  6. Spring Security认证器实现

    目录 拦截请求 验证过程 返回完整的Authentication 收尾工作 结论 一些权限框架一般都包含认证器和决策器,前者处理登陆验证,后者处理访问资源的控制 Spring Security的登陆请 ...

  7. sap 调用Http 服务

    REPORT ZMJ_GETAPI. DATA: LEN TYPE I, "发送报文长度 LEN_STRING TYPE STRING, URL TYPE STRING, "接口地 ...

  8. 用python随随便便做一个二维码叭~~~

    Python是目前最好的编程语言之一.由于其可读性和对初学者的友好性,已被广泛使用. 那么要想学会并掌握Python,可以实战的练习项目是必不可少的. 接下来,我将给大家介绍非常实用的Python项目 ...

  9. mariadb安装配置(主从配置)

    主服务器192.168.206.183 从服务器192.168.206.193 1.创建并编辑 /etc/yum.repos.d/MariaDB.repo文件(主从都要做) [mariadb] nam ...

  10. 字符输入流_Reader类&FileReader类介绍和字符输入读取字符数据

    java.io.Reader:字符输入流的最顶层父类,其中定义了一些共性的成员方法,是一个抽象类共性的成员方法 int read() 读取单个字符并返回 int read(char[] cbuf) 将 ...