Android实现SSH Client
本文实现的是如何使用JSCH在Android上实现一个简易版本的ssh client,来远程执行ssh命令。
1、启动ssh服务,本文以mac为例。
打开设置-->共享-->选择远程登录
2、检验ssh server是否开启成功。
打开shell
ssh dongxuli@ip
输入dongxuli账户的密码,没有报错即为开始ssh server成功。
3、下载jsch.jar:jsch-0.1.55.jar包_jsch-0.1.55.jar-Linux文档类资源-CSDN下载
4、新建Android项目并导入jsch-0.1.55.jar
5、Android源码实现ssh命令的执行:
class SSHTest {fun test(){Thread {val jsch = JSch()try {//ssh登录连接的用户名和ipval session = jsch.getSession("dongxuli", "192.168.31.123");//ssh登录连接的密码session.setPassword("123456");val config = java.util.Properties();config.put("StrictHostKeyChecking", "no");session.setConfig(config);session.connect()val channelExec = session.openChannel("exec") as ChannelExecchannelExec.setCommand("ls -l /Users/xxx \n")channelExec.connect()val inputStreamReader = BufferedReader(InputStreamReader(channelExec.inputStream))val errInputStreamReader = BufferedReader(InputStreamReader(channelExec.errStream))val runLog = StringBuilder("")val errLog = StringBuilder("")var line: String? = nullwhile (inputStreamReader.readLine().also { line = it } != null) {runLog.append(line).append("\n")}var errLine: String? = nullwhile (errInputStreamReader.readLine().also { errLine = it } != null) {errLog.append(errLine).append("\n")}Log.d("gggl" , runLog.toString())Log.d("gggl" , errLog.toString())} catch ( e : Exception) {e.printStackTrace();}}.start()}
}
执行test后会输出/User/xxx目录下的文件列表:
本例中使用的是ChannelExec,每次只能执行一条命令。如果想要执行多条命令,请使用ChannelShell。
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");//只能执行一条指令(也可执行符合指令)
ChannelShell channelShell = (ChannelShell) session.openChannel("shell");//可执行多条指令 不过需要输入输出流
1. ChannelExec
每个命令之间用 ; 隔开。说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。
每个命令之间用 && 隔开。说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。
每个命令之间用 || 隔开。说明:|| 是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。
2. ChannelShell
对于ChannelShell,以输入流的形式,可执行多条指令,这就像在本地计算机上使用交互式shell(它通常用于:交互式使用)。如要要想停止,有两种方式:
发送一个exit命令,告诉程序本次交互结束;
使用字节流中的available方法,来获取数据的总大小,然后循环去读。
Android实现SSH Client相关推荐
- 手机连接Linux系统 JuiceSSH - SSH Client(Android免费的SSH客户端)
手机连接Linux系统 JuiceSSH - SSH Client(Android免费的SSH客户端) 最近迷上Linux远程连接,以前经常尝试各种方式连接Linux服务器,发现手机上解决方案,Jui ...
- android处理服务器的集合,android集合SSH搭建服务器客户端请求
android集合SSH搭建服务器客户端请求 (2012-06-14 06:21:53) 标签: android 服务器 杂谈 android集合SSH搭建服务器客户端请求小弟以前是学的J2EE,由于 ...
- A free SSH client - putty[]
This is a open source project at http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. In ...
- android异步网络连接开源:Android Asynchronous Http Client
在github发现还有一个Android Asynchronous Http Client,发现也不错.基于异步方式执行android内置的apache httpClient组建,http请求在UI线 ...
- JTA(java telnet/ssh client)不能telnet/ssh远程机器问题与解决
最近公司在使用一个java ssh client(JTA http://javassh.org/space/start)来做为web页面中远程telnet/ssh机器的客户端,但是在使用jta提供的a ...
- bitwise ssh client的使用
前言 windows下的ssh客户端很多,bitwise ssh client是其中比较好的一款,功能也很强大,于是特地在博客里头介绍一下. 使用方法 直接在浏览器搜索bitwise ssh ...
- Bitvise SSH Client 8.32下载
Bitvise SSH Client 8.32 链接:https://pan.baidu.com/s/19gAmIY2BRYXa9-yIyacibQ 提取码:q5pb
- Dropbear替代Openssh-ssh client使用
替代纯属无奈之举,本来安装了一个Manjaro Linux桌面版本尝鲜,但在使用其ssh远程访问其他服务器和网络设备时发现失败报错,重装了openssh,问题依然存在 选择Dropbear替代方案 D ...
- Bitvise SSH Client连接不上linux,“请求被积极拒绝”
2019独角兽企业重金招聘Python工程师标准>>> 一直使用SecureCRT后来想试试Bitvise SSH Client,装上之后,输入ip,用户名,密码却总是连接不上Ubu ...
最新文章
- Revit:概念建模环境技能学习 Revit: Conceptual Modeling Environment
- 百练OJ:2742:统计字符数
- 2010Bossie大奖:十佳开源平台和中间件
- 取消一个请求(Cancel)
- Python 读写配置文件模块: configobj 和 configParser
- 底层主播生存录:玩不好算法,去不了塔尖
- .WeightedRandomSampler(3)
- java 字符串常用函数_Java学习笔记35:Java常用字符串操作函数
- lesson1 ODE的几何解法:方向场,积分曲线
- 信息系统项目管理师计算题(进度管理总浮动时间、自由浮动时间、工期)
- 数量关系-经济利润问题
- 电子护照阅读器便捷通行管理系统
- 读高明之《帛書老子校注》
- 架构思维成长系列教程(十二)- 云平台架构设计
- verilog prbs
- 第六周 day6 python学习笔记
- Boosting三巨头:XGBoost、LightGBM和CatBoost(发展、原理、区别和联系,附代码和案例)
- 木瓜抗疲劳 3种木瓜牛奶做法
- 纯文字网页数据的批量下载--以NOAA为例
- OneUI极强的 Bootstrap 管理仪表板模板