〖Android〗快速部署SSHD和Bash Shell(程序:DroidSSHD和BetterTerminalEmulatorPro)

~~此文仅做个人配置记录~~

因为我经常需要sshd来连接设备,它抓取logcat日志太方便了,方便排查问题,及多人共享;

及有USB孔限制的人来说,这个更具有意义;

把超级终端增强包部署到内网,也是为了方便下载,毕竟不是什么时候都可以上外网,并且外网下载太慢了;

增强包的配置相对比较麻烦一些,还需要配置bind9域名解析服务器,nginx或apach2网页服务器;

不过这些对于一般开发者来说,搭建这些玩意的服务器都不算个事;

此外,ssh并不同于adb shell,一些环境变量也没有;

如果这个时候,直接运行pm或am命令,则会直接导致Android设备重启;

当然,这也不是没有办法,后边提供的sshcmd即可解决这个小问题;

文件下载:

  1. DroidSSHdv06.apk 下载1(google) 下载2(国内)

  2. BetterTerminalEmulatorPro.apk(超级终端) 下载1(google)下载2(国内)

  3. [可选] 超级终端 增强包 bettertermpro_web.zip 下载1

安装应用:

  1. 安装应用 DroidSSHD 和 超级终端

  2. [可选] 解压 bettertermpro_web.zip 到 nginx 或 apache2 搭建的网页服务器根目录(直接外网条件下载太慢了,假定此机器是hostA)

  3. [可选] 手机接入的WiFi,DNS解析服务器设置(前提是有内网域名解析服务)把 magicandroidapps.com 指向 hostA

打开SSHD:

  运行DroidSSHD,选择以Root权限运行,假定端口号设定3322,勾选 Start on boot,然后勾选Start

ssh_config配置:

  vi ~/.ssh/config

  输入配置信息,如我的小米2手机是么配置的:

Host xiaomi
    HostName 55.55.137.149
    Port 3322
    User root

无密码登录:

  ssh-copy-id xiaomi

  因为$HOME变量被 DroidSSHD 指定到了 /sdcard,于是还需要登录 xiaomi 这个设备,执行一些操作

  ssh xiaomi 登录之后,执行以下命令:

busybox=/data/data/com.magicandroidapps.bettertermpro/bin/busybox.exe
$busybox cp /sdcard/.ssh/authorized_keys /data/data/br.com.bott.droidsshd/files/etc/authorized_keys
uid_ssh=$($busybox stat -c %g /data/data/br.com.bott.droidsshd/files/etc)
$busybox chmod $uid_ssh:$uid_ssh /data/data/br.com.bott.droidsshd/files/etc/authorized_keys
unset uid_ssh
$busybox mount -o remount,rw /system
$busybox cp /data/data/com.magicandroidapps.bettertermpro/bin/scp /system/xbin/scp
$busybox cp /data/data/com.magicandroidapps.bettertermpro/bin/sftp-server /data/data/br.com.bott.droidsshd/files/bin/
unset busybox

  复制scp和sftp-server是为了让DroidSSHD支持 sshfs 挂载,方便文件的操作

sshcmd:

  让ssh命令完全代替adb shell命令

#!/bin/bash
# 用于摸拟adb shell操作,稳定性比较adb shell好多了!

# self: get location
self=$(readlink -f $0)
self_dir=$(dirname $self)

DEVICE=${DEVICE:-‘xiaomi‘}
busybox=/data/data/com.magicandroidapps.bettertermpro/bin/busybox.exe

# run command
ssh -F $emmdevices $DEVICE     $busybox env     LOCAL_ENV_CURR_MODEM=/dev/block/platform/msm_sdcc.1/by-name/modem1     LOOP_MOUNTPOINT=/mnt/obb     LD_LIBRARY_PATH=/vendor/lib:/system/lib     BOOTCLASSPATH=/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework_ext.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/qcom.fmradio.jar     PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin     LOCAL_ENV_CURR_SYSTEM=/dev/block/platform/msm_sdcc.1/by-name/system1     MKSH=/system/bin/sh     ANDROID_DATA=/data     ANDROID_ROOT=/system     HOSTNAME=android     SHELL=/system/bin/sh     ANDROID_PROPERTY_WORKSPACE=8,65536     EXTERNAL_STORAGE=/storage/sdcard0     ANDROID_ASSETS=/system/app     TERM=vt100     ASEC_MOUNTPOINT=/mnt/asec     HOME=/data     ANDROID_BOOTLOGO=1     "[email protected]"

  这样子,使用类似命令 env DEVICE=xiaomi ./sshcmd am start -n com.easyapp.injecta/com.fake.activity.fakeUtil 即可通过命令行启动一个应用程序

sshpidcat:

  当然,你也期望抓取logcat时,指定个应用程序对吗?

  或许大家期望的抓取日志是这样子的: logcat <package_name> 指定只抓取自己相关的日志输出

  没错,使用pidcat即可完成,下载1(github)

  但是这个也是依赖于USB连接的,通过简单的修改,使之能够通过ssh来抓取指定apk的日志输出(依赖于之前的sshcmd)

  因为文件较大,直接给出文件下载:

  sshpidcat.zip (包含sshcmd和sshpidcat两个文件) 下载1

  这样子使用类似命令 env DEVICE=xiaomi ./sshpidcat com.easyapp.injecta 即可只抓取 com.easyapp.injecta 的输出

时间: 2024-07-30 03:23:49

〖Android〗快速部署SSHD和Bash Shell(程序:DroidSSHD和BetterTerminalEmulatorPro)的相关文章

[Android] 为Android安装BusyBox —— 完整的bash shell(收藏用)

大家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见Linux命令的阉割缩水版,用起来很不爽.是否想过在Android上使用较完整的shell呢?用BusyBox吧.不论使用adb连接设备使用命令行还是在手机上直接用terminal emulator都可以. 一.什么是BusyBox ? BusyBox 是标准 Linux 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大.更复

为Android安装BusyBox —— 完整的bash shell【转】

http://www.cnblogs.com/xiaowenji/archive/2011/03/12/1982309.html 大家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见Linux命令的阉割缩水版,用起来很不爽.是否想过在Android上使用较完整的shell呢?用BusyBox吧.不论使用adb连接设备使用命令行还是在手机上直接用terminal emulator都可以. 一.什么是BusyBox ? BusyBox 是标

快速部署tomcat项目的Shell脚本

为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启tomcat之前先检查tomcat进程有没有停掉,没有还要手动kill该进程. 发布次数多了,操作就比较繁琐了,索性写个脚本一键发布,省时省力^_^. 把deploy.sh和restart.sh分别拷贝到3个tomcat的bin目录下,再用chmod +x给这两个脚本赋上可执行权限. 一键发布命令:./deploy.sh 项目war包    例如:./deploy.sh /home/test.war 说明

Bash shell编程基础

1.何谓shell script shell script是利用shell的功能写一个"程序",这个程序是使用纯文本文件,将一些shell的语法与命令(包括外部命令)写在里面,搭配正则表达式,管道命令与数据流重定向,条件判断语句等功能,以达到我们所想要的处理目的. 2.脚本或程序源文件都是纯文本文件. 3.脚本或程序的执行一般有两种方式: 编译执行:预处理-->编译-->汇编-->链接:编译执行是一种计算机语言的执行方式. 由编译程序将目标代码一次性编译成目标程序,再

bash shell 需知

shell技巧(一) 等于 :equal to不等于:unequal to大于 :greater小于 :less than 1.test测试命令test命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试,其测试符和相应的功能分别如下:(1)数值测试:-eq:等于则为真-ne:不等于则为真-gt:大于则为真-ge:大于等于则为真-lt:小于则为真-le:小于等于则为真(2)字符串测试:=:等于则为真!=:不相等则为真-z字符串:字符串长度伪则为真-n字符串:字符串长度不伪则为真

bash shell基础语法

本文主要是基础的基础,希望对大家有所帮助 一.Shell基本类型的变量: (1)Shell定义的环境变量: Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用的Shell环境变量有: HOME 用于保存注册目录的完全路径名. PATH 用于保存用冒号分隔的目录路径名,Shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行. TERM 终端的类型. UID 当前用户的识别字,取值是由数位构成的字串. PWD

Shell脚本快速部署Kubernetes集群系统

本文紧跟上节所讲的手动部署Kubernetes管理Docker篇所写,本篇主要内容利用Shell脚本完成快速部署Kubernetes集群.上节博文看过的朋友也能感觉到部署过程相对比较简单,那么,出于简化工作流程,推进运维自动化角度来说,于是花了2/3天时间写这个部署Kubernetes脚本. 运维工作中,常常会遇到部署各种各样的服务,建议:常规部署都应该尽量使用脚本完成,一方面提高自身脚本编写能力,另一方面推进运维自动化. 详细部署说明文档:http://lizhenliang.blog.51c

Linux Bash Shell编程快速入门

BASH 的基本语法 最简单的例子 -- Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     最简单的例子 -- Hello World! 几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么我们今天也就从这个例子出发,来逐步了解 BASH. 用 vi 编辑器编辑一个 hello 文件如下: #!/bin/bash# This is a very simple

shell 脚本快速部署dhcp服务器!

服务器地址:192.168.1.110  网段:192.168.1.0  子网掩码:255.255.255.0  网关:192.168.1.254 [[email protected] ~]# cat dhcp.sh #!/bin/bash#auto deploy dhcp server for  192.168.1.0/24 netmask #this script need you have you yum repository echo "____________mount-cdrom__