scala用ssh2连接Linux
这个需要安装库:
import ch.ethz.ssh2.{Connection, Session, StreamGobbler}
首先用 ip 和 post 创建连接:
val conn: Connection = new Connection(ipAddr, post)
判断这个连接是否连接上了,这个用了一个 Boolean 类型判断:
def login(): Boolean = {
conn.connect()
// 连接
val ret: Boolean = conn.authenticateWithPassword(userName, password)
ret
}
如果连接成功的话,那么就将命令发送过去,命令发送只需要建立一个会话即可,执行命令返回的值保存在 in 中:
val session = conn.openSession()
session.execCommand(cmds)
val in = session.getStdout
最后就是处理解析 in 中的返回结果就行了:
val is = new StreamGobbler(in)
val brs: BufferedReader = new BufferedReader(new InputStreamReader(is))
val line = brs.lines().toArray().toList.mkString(",")
完整的类封装成:
class RemoteShellTool(ipAddr: String, post: Int, userName: String, password: String) {
val conn: Connection = new Connection(ipAddr, post)
//判断是否连接上了
def login(): Boolean = {
conn.connect()
// 连接
val ret: Boolean = conn.authenticateWithPassword(userName, password)
ret
}
//发送命令过去
def exec(cmds: String): String = {
var result: String = ""
try {
val str_ret: Boolean = login()
if (str_ret) {
// 打开一个会话
val session = conn.openSession()
session.execCommand(cmds)
val in = session.getStdout
result = processStdout(in)
} else {
println("连接失败")
}
} catch {
case e: IOException => {
e.printStackTrace()
}
} finally {
conn.close()
}
result
}
//处理返回结果
def processStdout(in: InputStream): String = {
val is = new StreamGobbler(in)
val brs: BufferedReader = new BufferedReader(new InputStreamReader(is))
val line = brs.lines().toArray().toList.mkString(",")
line
}
在 main 函数中调用这个类即可:
def main(args: Array[String]): Unit = {
//读取配置文件
val filePath = System.getProperty("user.dir")
val properties: Properties = new Properties()
val ipstream = new BufferedInputStream(new FileInputStream(filePath + "/conf/configssh.properties"))
properties.load(ipstream)
val ip = "ip"
val post = "post".toInt
val userName = "userName"
val password = password"
val cmd = "cmd"
val rms = new RemoteShellTool(ip, post, userName, password)
val result = rms.exec(cmd)
println(result)
}
这个方法能发送的 cmd 有点少,比如能识别 date 、 ls 等,但是不能识别 history 、 ll
scala用ssh2连接Linux的更多相关文章
- 第2章 Linux系统安装(3)_SSH连接Linux工具:SecureCRT和WinSCP
4. SSH连接Linux工具 4.1 Linux网卡配置 (1)临时配置: ifconfig eth0 192.168.32.100 //给eth0网卡指定IP,写在ROM里的,关机会丢失. (2) ...
- putty连接linux as5 输入密码后连接中断
putty连接linux as5 输入密码后连接中断 1.修改putty首页的设置,选择“close session on exit” 为 “never”,之后发现输入密码后,“session clo ...
- windows上使用SecureCRT连接linux
前言: SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件.这样操作的时候不必进入到linux桌面,可以更方便的 ...
- java使用SSH连接Linux系统
SSH连接linux系统使我们在开发项目中常用到的,现在留下来,做个记录 package com.log; import java.io.BufferedReader; import java.io. ...
- SecureCRT连接linux步骤
SecureCRT连接linux步骤 做个笔记,以免隔段时间后忘了 LINUX系统一般都是用来作服务器使用,而且都是通过命令行来操作,为了操作方便我们都会使用第三方软件来远程操作.CRT就是比较常用 ...
- 用Putty连接Linux
随着linux应用的普及,linux管理越来越依赖远程管理.在各种telnet类工具中,putty是其中最出色的一个. 一.Putty简介 Putty是一个免费小巧的Win32平台下的teln ...
- Python (paramiko) 连接Linux服务器
目录 参考资料 Paramiko 安装 连接Linux 文件上传/下载 文件封装 其他 参考资料 https://www.liujiangblog.com/blog/15/ https://blog. ...
- Windows远程连接Linux
目录 xrdp方式 vnc方式 xrdp方式 ----------------------------------------------------------------------------- ...
- 1、linux网络服务实验 用PuTTY连接Linux
这个是大三下学期的Linux网络服务配置详解时,感觉老师上得简单,就整理下,岭南师范学院师弟妹有福,如果是蔡老师交的话,可以拿来预习,复习. 一.用PuTTY连接Linux ①.装有redhat系统的 ...
随机推荐
- aizhan爱站关键字采集
功能:支持批量网站查询,支持登录后查询,支持批量导出txt http://blog.ddian.cn/content/uploadfile/201402/dc5c501411f758849b09c09 ...
- Falsy Bouncer 过滤数组假值
过滤数组假值 (真假美猴王) 删除数组中的所有假值. 在JavaScript中,假值有false.null.0."".undefined 和NaN. function bounce ...
- rhel 7安装Mysql
rhel7安装mysql服务 环境: 1)rhel 7虚拟机 2)配置完163网络yum源,并且保证网络通畅 安装过程: 1) 安装Mysql和Mysql-devel 命令:yum install m ...
- Python-杂物
1,and和or 在一个bool and a or b语句中,当bool条件为真时,结果是a:当bool条件为假时,结果是b. a = "heaven" b = "hel ...
- vue-cli 2篇官方文档记录收藏
https://cli.vuejs.org/guide/ http://vuejs-templates.github.io/webpack/
- BZOJ2649 : riddle
题意同3495,但是内存限制收紧了,不能采用3495的前后缀优化建图的方式. 注意到“每个集合恰好选择一个点”可以放宽成“每个集合最多选择一个点”,对于最后求出的方案里,如果某个集合没选点,任选一个就 ...
- FlowerVisor理解
Ï来自FlowVisor: A Network Virtualization Layer这篇论文的理解 1. 简介 论文讲述如何虚拟化一个网络,并描述一个特殊的系——FlowVisor 网络虚拟化用来 ...
- Linux下Shell重定向
1. 标准输入,标准输出与标准错误输出 Linux下系统打开3个文件,标准输入,标准输出,标准错误输出. 标准输入:从键盘输入数据,即从键盘读入数据. 标准输出:把数据输出到终端上. 标准错误输出:把 ...
- worknote
一.变更注意事项 1.部署平台: a.重启服务时,通过部署平台跳到各服务器操作时,注意修改字符编码为en_US.utf-8 b.服务器之间通过部署平台的dscp命令传输文件到目标服务器:如果连接目标服 ...
- 我理解的websocket
短轮询:客户端发起请求,服务器无论有无消息都返回信息,结束http连接.然后继续发起请求. 长轮询:客户端发起请求,建立连接,直到服务端返回消息response,结束http连接.然后继续发起请求,重 ...