sshj 示例
sshj 示例
开发常常需要去服务器做一些操作,比如配置一下,或者取服务器的配置什么的,需要写点工具方便开发。
下面是一个使用sshj 模拟ssh的过程。
package sshStuff;
import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.IOUtils;
import net.schmizz.sshj.connection.channel.direct.Session;
import net.schmizz.sshj.connection.channel.direct.Session.Command;
import net.schmizz.sshj.transport.verification.PromiscuousVerifier;
public class Functor {
public static void main(String[] args) throws Exception {
String TMP = "http://10.59.60.231:31154";
if(args.length >= 1){
TMP = args[0];
}
String ret = connect(TMP);
System.out.println(ret);
}
public static String connect(String url) throws Exception {
SSHClient ssh = new SSHClient();
ssh.addHostKeyVerifier(new PromiscuousVerifier());
ssh.connect(getIp(url), getPort(url));
ssh.authPassword("root", "123456");
Session session = ssh.startSession();
Command cmd = session.exec("cat /usr/local/tomcat/StartTomcat.sh");
String ret = IOUtils.readFully(cmd.getInputStream()).toString();
// System.out.println(ret);
session.close();
ssh.close();
return ret;
}
private static String getIpPort(String url) {
String[] slash = url.split("/");
String ipport = null;
if (url.toLowerCase().startsWith("http")) {
ipport = slash[2];
} else {
ipport = slash[0];
}
return ipport;
}
private static String getIp(String url) {
String ipport = getIpPort(url);
return ipport.split(":")[0];
}
private static int getPort(String url) {
String ipport = getIpPort(url);
return Integer.parseInt(ipport.split(":")[1]) + 1;
}
}
下面是gradle配置
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile group: 'net.schmizz', name: 'sshj', version: '0.10.0'
}
// In this section you declare where to find the dependencies of your project
repositories {
// Use jcenter for resolving your dependencies.
// You can declare any Maven/Ivy/file repository here.
jcenter()
}
jar {
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
manifest {
attributes 'Main-Class': 'sshStuff.Functor'
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}
sshj 示例的更多相关文章
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1
微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们 ...
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- XAMARIN ANDROID 二维码扫描示例
现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile 做一个简单的 Android 条码扫描示 ...
- iOS之ProtocolBuffer搭建和示例demo
这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我 ...
- oracle常用函数及示例
学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...
随机推荐
- Python基础:四、python的优缺点
python是一门动态解释性的强类型语言 python的优点: 1. python的定位是"优雅"."明确"."简单" python程序看上 ...
- WebView 判断放大缩小操作
using Android.App; using Android.Widget; using Android.OS; using Android.Content; using Android.Runt ...
- PythonStudy——生成器
# 生成器:自定义的迭代器对象 # -- 就是用函数语法来声明生成器,用yield关键字取代return关键字来返回值,参数没有多少变化 # 总结:有yield关键字的函数,函数名() 不是调用函数, ...
- JNI学习笔记_Java调用C —— 非Android中使用的方法
一.学习笔记 1.java源码中的JNI函数本机方法声明必须使用native修饰. 2.相对反编译 Java 的 class 字节码文件来说,反汇编.so动态库来分析程序的逻辑要复杂得多,为了应用的安 ...
- docker安装centos后没有ifconfig命令解决办法
使用docker pull centos命令下载下来的centos镜像是centos7的最小安装包,里面并没有携带ifconfig命令,导致我想查看容器内的ip时不知道该怎么办 yum provide ...
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-5: ordinal not in range(128)
原因是pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码.解决办法是: python目录 Python27\Lib\site-packages 建一个文件site ...
- Kettle解决方案: 第一章ETL入门
第一章ETL入门 1.1 OLPT和数据仓库对比 普通的事务系统和商业智能系统(BI)有什么区别? 1个独立的普通事务系统也被称为在线事务处理系统(OLTP) 商业智能系统也常被称为决策支持系统(DS ...
- html5/h5课件如何制作?
随着flash逐渐被html5取代,很多教育机构都在面临着如何将自己的flash交互课件产品转换到html5版本的问题,最近遇到非常多的客户一上来就问我,flash课件能直接转成Html5课件么?答案 ...
- 黄聪:如何正确在Vue框架里使用Swiper
实例: 错误(无法显示出分页器按钮,此功能不适用与for循环出来的图片,只有当该页面图片固定几张时能正常用) 第一步: 安装 npm i swiper (vue插件自带) 第二步: 在当前页面里引入 ...
- mysql合并表
有如下两张表 a +------+------+---------+ | uid | name | addtime | +------+------+---------+ | | | +------+ ...