Termux应用详解

  • 时间:
  • 浏览:18
  • 来源:跟我学网络

起因

几个月前学了python,写了几个练手的爬虫,要运行很久才能下载到足够的数据,挂机一夜似乎有点费电,我还心疼我的电脑呢。就一直想拿一个安卓手机来跑,当时只当个想法,并没有动手实施。结果最近恰逢老爸换手机,于是旧手机,一个红米note2被我拿来了,于是开始了我的折腾之旅。我从未接触过linux,但幸好这方面的教程已经很多,通过大量搜索和实践,走了很多弯路,总算能完成预期目标了。

开始前

最好把手机root,虽然Termux不需要root权限也可以运行,但root后可以用管理员权限,cd 进入手机存储目录,后面可以干的事更多。

我把手机刷了miui7的开发版,反正也不会拿来用,随便刷。

root后,推荐装一个re explorer,用来和电脑传文件。因为电脑没法直接访问手机内置空间。

为什么是Termux

Termux是我们的主角,相当于安卓上的linux虚拟机(这样说肯定不对,但权且这么理解吧),下载地址Google Play-Termux。

一开始我听说GNU Root Debian功能更加强大,尝试安装这个花了很长时间。在google play上下载apk安装后,每次打开都闪退,底下提醒GNU Root not yet installed...我按照提示,以为还要安装GNU Root,正好google play上也有一个这名字的app,但安装上后仍无法运行。后来搜索发现,有人称此app无法在联发科CPU的手机上运行(贴吧-实战红米手机安装Debian系统),不巧红米note2就是联发科的,倒霉...

所以我就选择了Termux,可以说是因为没办法,但事实证明,Termux很强大,绝对够用。

Termux的安装

我是按照知乎-如何让自己在电脑上写的python脚本在手机或安卓系统上运行呢?上的回答来安装并配置Termux和python环境的。基本就是:

1. 更新包

apt update
apt upgrade

2. 修改源

export EDITOR=vi
apt edit-sources

在vi编辑器里把第二行替换成以下内容(清华镜像源)

deb [arch=all,arm] http://mirrors.tuna.tsinghua.edu.cn/termux stable main

在vi编辑器里,输入第一个i进入编辑模式(插入),下面会给出提示“INSERT”,此时再打字就是在光标左边插入字符。等修改完毕后,按住音量,同时输入e,即可退出编辑模式。再输入:wq保存并退出vi。

3. 安装python3与相关模块

# 安装python3.6
apt install python python-dev

我目前仅会爬虫,因此暂时只安装了几个用得到的模块。

# 安装爬虫相关模块

# beautifulsoup, requests
pip install BeautifulSoup4 requests

# lxml
apt-get install clang
apt-get install libxml2 libxml2-dev libxslt libxslt-dev
pip install lxml

使用Termux

安装成功后就可以正常使用python了,有几点技巧记下来。



运行python

1. 管理员身份

默认是没有管理员权限的,在执行一些敏感操作时会提示Permission denied,或者在cd到一些目录时会提示无此文件夹。

输入su进入管理员身份,第一次进入时仍会提示Permission denied,但此时Termux已经申请了获取手机的root权限,进入安全中心的root权限管理,给Termux通过即可。此时再次su就可以成功了。

su进管理员身份



在管理员身份下,输入exit可回到普通用户身份。

但Termux环境的根目录是/data/data/com.termux/files,而在su后的PATH环境变量是/sbin/su:/system/bin,很多命令就用不了(贴吧-Termux下root权限问题的解决办法),比如此时就无法进入python。

此时无法打开python



但按照上个网页的说法,tsu命令修复了PATH变量,但需要先安装。
# 安装tsu
pkg install tsu

但我尝试了一下,tsu后执行python仍提示未安装,我没有继续往下试,也许能行?

tsu提示没有安装python

2. 终止程序运行

我们都知道用Ctrl+C终止程序,在Termux中,需要使用音量+c

3. 输入法

我用的谷歌输入法,一些常用的特殊符号可以在qwerty键盘上长按得到,比较方便。也有人推荐黑客键盘,试了下,不能输入中文,在别的地方还得切换,麻烦。

但不管用什么输入法,手机上敲代码都太反人类了,下面介绍一下通过笔记本键盘连接Termux的方法。

远程键盘

我个人试验成功了两种方法,都无需在电脑上安装软件,可以在命令行中运行。但为了简便起见,推荐安装XShell5。

1. Remote Keyboard

通过Telnet方式与电脑通讯,下载地址Google Play-Remote Keyboard,几乎无需配置,极为简便

软件安装后打开,即显示以下界面

Remote Keyboard界面



此时点击上方Select Keyboard,将默认输入法选为Remote Keyboard。

然后在电脑上进入命令行,输入telnet [host] [port]。比如按照上图,在命令行输入:
telnet 192.168.1.103 2323

即可进入telnet界面,此时在该窗口按下的任何字符都可以在手机的输入界面上显示。

如果上句报错telnet不是有效命令,按照百度经验-Win7如何开启Telnet服务所说开启服务。

但此方法有几个严重缺点:

  1. 最重要的,会掉线,而且有时掉线后无论如何都无法重新连接上。
  2. 有延迟,偶尔掉包。
  3. 不支持组合键。

2. SSH

这个方法比较高级,但配置很麻烦,我弄了一天。当然有linux基础的人能很快上手,不懂的按照我的步骤,也能很快配置完成。

手机上操作:

# 安装openssh
apt install openssh

安装完成后会在手机的data\data\com.termux\files\home下创建.ssh文件夹,里面有文件authorized_keys,用于储存可以通过验证的机器公钥。

电脑上操作: 在电脑命令行输入ssh,看是否报错。如果报错,下载并安装OpenSSH,配置环境变量。确保命令行输入ssh后正常运行。



命令行输入

ssh-keygen -t rsa

执行完成后,会在C:\Users\username\.ssh文件夹下创建三个文件id_rsa, id_rsa.pub, known_hosts。分别是私钥、公钥和连接记录,第一个文件不要泄露。

然后通过各种方式将id_rsa.pub文件复制到手机的data\data\com.termux\files\home\.ssh文件夹内。有人用adb push,我不会,用的复制粘贴大法...复制到电脑能访问到的sd卡中,再在手机上用re explorer移动到目标文件夹(手机必须root才可以做到)。

手机上操作: 首先cd到.ssh文件夹,然后将公钥内容复制到验证文件中

# 复制公钥内容到验证文件
cat ./id_rsa.pub >> authorized_keys

再获取用户名,比如说u0_a118

whoami

还需要保证.ssh文件夹的权限为700(即rwx------),而且用户为u0_a118。

通过执行ll -a命令可以查看当前路径下的所有文件和文件夹权限,但不能在普通用户权限下执行该命令。

# 获取管理员权限
su
# 进入home目录
cd data\data\com.termux\files\home
# 查看当前路径文件和文件夹权限
ll -a

执行后如图,红框内为.ssh文件夹权限和用户

若结果不对,则需要修改

# 修改权限
chmod 700 .ssh
# 修改用户和组
chown u0_a118:u0_a118 .ssh

同样查看authorized_keys文件权限是否是600(rw-------),用户是否正确。不是的话按上述方法修改。

此时已经设置完成,通过sshd命令即可开启ssh服务器。

# 指定端口9000
sshd -p 9000

电脑上操作:

命令行输入ssh [username]@[host] -p [port]即可连接,比如

ssh u0_a118@172.16.2.11 -p 9000

成功连接到Termux!

此后,在电脑命令行输入指令,手机即可执行(但无任何显示),甚至手机可以熄屏。完美!

最后,以成功运行以前写的爬虫程序图结尾。



电脑通过SSH远程手机执行爬虫