java-代码操作服务器之SSH连续发送命令
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连续发送命令的更多相关文章
- Java代码操作zookeeper
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Java代码操作HDFS测试类
1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...
- 使用java代码操作Redis
1导入pom.xml依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis ...
- java代码操作Redis
1.导入需要的pom依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEn ...
- Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比
Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...
- 分享知识-快乐自己:java代码 操作 solr
POM 文件: <!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> < ...
- 大数据之路week07--day01(HDFS学习,Java代码操作HDFS,将HDFS文件内容存入到Mysql)
一.HDFS概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 ...
- java:nginx(java代码操作ftp服务器)
1.检查是否安装了vsftpd [root@linux01 ~]# rpm -qa|grep vsftpd 2.安装vsftpd [root@linux01 ~]# yum -y install vs ...
- Java代码操作HDFS(在/user/root/下面創建目錄)
1.创建HDFS目录并打成jar包 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.h ...
随机推荐
- vue3 迫不得已我硬着头皮查看了keepalive的源代码,解决了线上的问题
1.通过本文可以了解到vue3 keepalive功能 2.通过本文可以了解到vue3 keepalive使用场景 3.通过本文可以学习到vue3 keepalive真实的使用过程 4.通过本文可以学 ...
- NHibernte 4.0.3版本中,使用Queryover().Where().OrderBy().Skip().Take()方法分页获取数据失败
问题代码如下: var result=repository.QueryOver<modal>() .Where(p=>p.Code==Code) .OrderBy(p=>p.I ...
- 利用kubernetes资源锁完成自己的HA应用
Backgroud 前一章中,对kubernetes的选举原理进行了深度剖析,下面就通过一个example来实现一个,利用kubernetes提供的选举机制完成的高可用应用. 对于此章需要提前对一些概 ...
- Java数组的基本操作
public class Array1 { public static void main(String[] args) { int [] num={1,2,3,4,5}; System.out.pr ...
- 单片机 MCU 固件打包脚本软件
1 前言 开发完 MCU 软件后,通常都会生成 hex 文件或者 bin 文件,用来做固件烧录或者升级,如果用来做产品开发,就涉及到固件版本的问题,初学者通常采用固件文件重命名来区分版本. 如果需 ...
- MYSQL索引的建立、删除以及简单使用
一.前期数据准备 1.建表 CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAUL ...
- Git下载(快速快速快速下载!!)
在安装Git环境的时候,需要下载Git的安装包,但是官网的下载网速实在是太慢的(几十M的安装包,下载速度只有几十K) (所以可以在镜像中下载,速度超快) Git镜像下载链接-------------- ...
- 测试右移:线上质量监控 ELK 实战
目录 [测试右移]介绍 ELK Stack 介绍 ELK 监控体系搭建 ES & Kibana 搭建 Nginx 日志自动采集 Nginx Agent 安装 Nginx 服务器 数据分析 Lo ...
- Intel的CPU系列说明
至强可扩展系列是英特尔推出的新一代至强处理器系列,如今距离该系列推出几乎过去一年了.新的CPU并没有延续E系列的命名,英特尔将至强可扩展系列以金属命名,将该系列分为"铂金Platinum&q ...
- 【python】M3U8下载器脚本
[python]M3U8下载器脚本 脚本目标: 1. 输入M3U8文件的链接,得到视频 2.使用异步操作,这样可以快很多,不加锁,因为懒得写,而且影响不大 已知条件: 1.m3u8文件其实就是一个记录 ...