java控制远程ssh-JSCH(二)
github: https://github.com/wengyingjian/ssh-java-demo.git
这次找到了一套新的api,叫jsch。网上查了一下,顺便把官网的几个demo给一通拿过来了(还看到了sftp,看来到时候文件传输也可以用这个写)。
一。测试与修改代码
运行了给的代码以后发现时带图形化的,果断删去不相干的代码,看上去果然清楚多了。
然后调用了一下,发现返回的结果也方便:每次服务器给出啥反应就得到啥字符串,这下字符串切割要方便一些了。
关键是在打印信息的时候我看到了个“while true” ,试了一下,果然能够保证程序不退出,持续输出,这就是我想要的。
但是也发现了不足:每次只能运行一条命令。
这一些东西是前两天在机场写的,不知道为啥ssh连接很慢,所以执行多条语句的时候等的超级蛋疼。。
二。对代码的改造
将原先的代码改了一通,变成自己的工具类,基本功能得以实现。
三。整个功能的合并
回到最初的目的,是要做4件事:
0).ssh user@host
password
1).netstat -anp|grep 8080
2).kill pid
3).$CATALINA_HOME/bin/startup.sh
4).tail -f $CATALINA_HOME/logs/catalina.out
其中1和2之间是要得到返回结果,在java中分析到底第二步要kill的pid是多少的。
所以执行顺序应该是:1->2,3,4
但是现在支持连续多条命令的不支持输出日志,支持输出日志的不能执行多条语句,所以只能是1->2,3->4
补一句:log4j未调通,所以使用system.out显得有点low了。。
四。其它的思考
既然没有找到我特别满意的javaAPI,我是不是可以把ssh协议看作是http协议(先不管加密认证的事),通过socket编程来自己实现一个ssh的客户端。
这么一想,如果不用ssh协议呢?的确,用啥都行,甚至自己用java随便在服务器上来个端口,客户端与其通信,这样理论上也是行得通的。也能找到同样在运用中的例子:cargo以及tomcat插件的自动化部署,走的就是http协议,然后通过tomcat的manager来认证。然而,tomcat关闭了就用不了了。
所以,为什么要用ssh,(抛开安全的问题)就是因为ssh-server几乎已经成了linux服务器的标配,所以我们才使用的。
至于用java来自己写一个ssh客户端,我会先把毕业设计其它的部分先完成,然后再用剩余的时间去尝试自己实现。
java控制远程ssh-JSCH(二)的更多相关文章
- java控制远程ssh-expect4j(一)
github : https://github.com/wengyingjian/ssh-java-demo.git 程序写完后,ssh连接到远程服务器上需要做的步骤都是固定的,所以我们可以通过程序来 ...
- JAVA实现远程SSH连接linux并运行命令
博客转移到http://blog.codeconch.com
- java:Linux(简单命令,远程ssh使用hostname访问,.免密钥登录配置)
1.临时关闭防火墙: service iptables stop 临时开启防火墙: service iptables start 查看防火墙状态: service iptables sta ...
- 公钥-私钥 白名单-黑名单 Linux 远程访问及控制(SSH)
远程访问及控制一.SSH远程管理二.OpenSSH服务器① SSH (Secure Shell)协议② OpenSSH三.配置OpenSSH服务器举例四.sshd 服务支持两种验证方式五.使用SSH客 ...
- Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)
第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...
- 20145221 《Java程序设计》实验报告二:Java面向对象程序设计
20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- CentOS生产机器禁止ROOT远程SSH登录
方法一 很多站长拥有linux主机,不管是虚拟机还是实体机,一般我们远程连接的时候,都是用的ssh(SecureShell建立在应用层和传输层基础上的安全协议). 它默认的端口22,默认使用root也 ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- 不同路由器下远程ssh登录Beaglebone系统(通过路由器端口转发,配合花生壳的DDNS功能)
使用场景: 一般家庭设备都是通过路由器中转连上互联网的,而且运营商给家庭宽带分配的IP地址也是动态的.随时可能变动的.所以当程序员们离开家之后,是很难直接和家里的设备进行交互的.但是通过TPLINK路 ...
随机推荐
- Python list的定义和删改
需要用到list.取回参数 . sys.argv返回的是个元组. 最后发现用for循环好像没用. a=0 for i in sys.argv[1:]: qh[a]=sys.argv[a] a=a+1 ...
- 【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- JavaScript高级程序设计学习笔记第十一章--DOM扩展
1.对 DOM 的两个主要的扩展是 Selectors API(选择符 API)和 HTML5 2.Selectors API Level 1 的核心是两个方法: querySelector()和 q ...
- hdu3047 Zjnu Stadium (并查集)
Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- ACM-ICPC2018南京网络赛 AC Challenge(一维状压dp)
AC Challenge 30.04% 1000ms 128536K Dlsj is competing in a contest with n (0 < n \le 20)n(0<n ...
- unity2017分离动作
http://tsubakit1.hateblo.jp/entry/2015/06/01/235939 using UnityEngine; using UnityEditor; using Syst ...
- uoj#339. 【清华集训2017】小 Y 和二叉树(构造)
传送门 膜拜大米饼巨巨 构造思路太神仙了-- 先考虑这个序列的开头,肯定是一个度数小于等于\(2\)且标号最小的节点,设为\(u\) 如果一个点度数小于等于\(2\),我们称这个点可以被选择,一个点的 ...
- [Xcode 实际操作]七、文件与数据-(13)数据持久化存储框架CoreData的使用:编辑CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何修改数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作
一.JAP框架简介 JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化规范.主要是为了简化持久层开发以及整合ORM技术,结束H ...
- 在Centos中安装HustOJ实验记录
hustoj是目前使用最广泛的刷题平台,自建平台是编程教学中重要一环,教,学,测,反思形成闭合回路.目前利用现有的服务器资源,建成了开高开源code中心,一个刷题系统,六月再建一个私有云,私有云不仅是 ...