设为首页 收藏本站
查看: 1399|回复: 0

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

[复制链接]

尚未签到

发表于 2015-12-3 14:37:16 | 显示全部楼层 |阅读模式
  
  ~~此文仅做个人配置记录~~
  
  因为我经常需要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 ls -l /data/data/br.com.bott.droidsshd/files | $busybox awk '{print $3}' | $busybox head -n1)
uid_num=$($busybox id $uid_ssh|$busybox awk -F'[=(]' '{print $2}')
$busybox chown $uid_num:$uid_num /data/data/br.com.bott.droidsshd/files/etc/authorized_keys
unset uid_ssh
unset uid_num
$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 \
"$@"
  这样子,使用类似命令 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 的输出

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146894-1-1.html 上篇帖子: 【原创】用shell+ant构建apk 下篇帖子: Shell解释器(学习笔记四)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表