0.安装

下载地址

1.如何使用 Termux 镜像

方法一:自动替换

使用如下命令自动替换官方源为 TUNA 镜像源

sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list
sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list
sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list
apt update && apt upgrade

方法二:手动修改

编辑 $PREFIX/etc/apt/sources.list 修改为如下内容

deb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main

编辑 $PREFIX/etc/apt/sources.list.d/science.list 修改为如下内容

deb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable

编辑 $PREFIX/etc/apt/sources.list.d/game.list 修改为如下内容

deb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable

请使用内置或安装在 Termux 里的文本编辑器,例如 vi / vim / nano 等,不要使用 RE 管理器等其他具有 ROOT 权限的外部 APP 来修改 Termux 的文件

社区源

镜像站还提供了如下社区维护的源,如需使用请自行添加:

  • https://mirrors.tuna.tsinghua.edu.cn/termux/x11-packages
  • https://mirrors.tuna.tsinghua.edu.cn/termux/unstable-packages
  • https://mirrors.tuna.tsinghua.edu.cn/termux/termux-root-packages-24

警告

镜像仅适用于 Android 7.0 (API 24) 及以上版本,旧版本系统使用本镜像可能导致程序错误。

1.SSH

有时候我们需要通过 ssh 远程连接服务器,这个时候有 Termux,躺在床上就可以操作电脑了,!哦哦哦!awesome ,或者我们突然很闲,想要用电脑来远程手机,没错 Termux 都可以做到。

Termux ssh 连接电脑

安装 openssh

OpenSSH 是SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。Termux 官方已经封装好了,我们安装起来也会很简单:

Bash

pkg install openssh

1.1远程连接电脑

然后就可以直接ssh连接你的服务器了,(前提是电脑安装了ssh服务)

Bash

ssh Administrator@192.168.31.217

手机连接操作电脑效果图:

 

附上完整的 Linux SSH 连接命令格式:

Bash

# ssh -p 端口号 用户名@主机名或者IP
ssh -p 22 user@hostname_or_ip

# ssh -i 私钥 用户名@主机名或者IP
ssh -i id_rsa user@hostname_or_ip

传输文件

SSH 不仅仅可以远程连接服务器,同样也可以使用SSH自带的scp命令进行文件传输:

复制文件

Bash

# scp 本地文件路径 远程主机用户名@远程主机名或IP:远程文件保存的位置路径
scp local_file remote_username@remote_ip:remote_folder

复制目录

Bash

# scp -r 本地文件夹路径 远程主机用户名@远程主机名或IP:远程文件夹保存的位置路径
scp -r local_folder remote_username@remote_ip:remote_folder

例如把远程复制到本地

scp Administrator@192.168.31.84:G:\adb /data/data/com.termux/files/home/

看完了 不打算亲自尝试一下文件传输的操作吗? :-)

1.2 电脑 ssh 连接 Termux

这个使用场景比较少,但是既然要打造中国的 Termux 文档的效果,还是一起写上去吧,首先确保你已经安装了 openssh 软件包,没有安装的话参考上一个小结进行安装。实现这个效果有两大种方法:

  1. SSH 通过密码认证连接

  2. SSH 通过公私钥连接

    • PC 端生成公私钥,然后将 公钥 拷贝到 Termux 中,通过公私钥连接。

    • Termux 端生成公私钥,然后将 私钥拷贝到 PC 中,通过公私钥连接。

启动 ssh 服务

安装完成后,sshd服务默认没有启动,所以得手动启动下:

Bash

sshd

因为手机上面低的端口有安全限制,所以这里 openssh 默认的 sshd 默认的服务端口号为 8022

 

停止 ssh 服务

如果需要停止 ssh 服务,只需要 kill 杀掉进程即可:

Bash

pkill sshd

通过密码认证链接

Termux 默认是使用密码认证进行连接的,如果要启用密码连接的话要确保你的密码足够安全,否则你的SSH被恶意攻击者连接或者爆破成功的话,那就美滋滋了!

Termux 下的 SSH 默认配置文件的路径为 $PREFIX/etc/ssh/sshd_config,我们来查看下这个配置文件:

Sshd_config

PrintMotd no
PasswordAuthentication yes
Subsystem sftp /data/data/com.termux/files/usr/libexec/sftp-server

国光的 Termux 0.94 的版本就这3行配置,下面来逐行解释一下这个配置:

PrintMotd : 是否显示登录成功的欢迎信息 例如上次登入的时间、地点等

PasswordAuthentication: 是否启用密码认证

Subsystem: SFTP 服务相关的设定

设置新密码

执行 passwd 命令可以直接修改密码:

Bash

passwd

 

密码不要忘记哦

密码不要忘记哦

 

电脑远程连接测试

国光测试了一下 Termux 的 ssh 和常规 Linux 不太一样,连接的时候不需要指定用户名。

Bash

ssh 192.168.31.109 -p 8022

 

 

1.3 通过公私钥连接

公私钥连接更加安全,再也不用但你的Termux SSH被黑客爆破攻击的情况了

PC 端生成公私钥

首先在PC端生成秘钥对:

Bash

ssh-keygen

默认一直回车下去:

此时会在~/.ssh目录下生成 3 个文件
id_rsa, id_rsa.pubknown_hosts

然后需要把公钥 id_rsa.pub 拷贝到手机的 data\data\com.termux\files\home\.ssh 文件夹中。然后

将公钥拷贝到验证文件中

Termux下操作

Bash

cat id_rsa.pub > authorized_keys

 

 

OK 现在你已经设置好公私钥了,那么修改一下 SSH 的配置文件,关掉密码登录吧:

Bash

vim $PREFIX/etc/ssh/sshd_config

找到

Bash

PasswordAuthentication yes 

修改为

Bash

PasswordAuthentication no

然后记得重启一下 SSH 服务:

Bash

pkill sshd;sshd

然后电脑端这边直接就可以通过公私钥连接了,无需输入密码也更加安全:

Bash

ssh 192.168.31.109 -p 8022

 

Termux 端生成公私钥

操作完上一步之后,我想你大概已经知道了公私钥的原理了。那么我们现在尝试在 Termux 端生成公私钥这种方法试试看,理论上也是可以的。

首先在 Termux 端生成秘钥对:

ssh-keyge

此时会在~/.ssh目录下生成 3 个文件
id_rsa, id_rsa.pubknown_hosts

然后将公钥拷贝到验证文件中

Bash

cat id_rsa.pub > authorized_keys

 

接着将id_rsa.pub私钥下载下来,拷贝到PC端上,并赋予 600 的权限:

Bash

chmod 600 id_rsa

然后通过-i 手动加载私钥的方式也可以成功连接到 Termux:

Bash

ssh -i id_rsa root@192.168.31.109 -p 8022

 

Bingo!

至此,Termux ssh 连接的 3 种方式都演示过了,国光个人比较建议使用 PC 端生成公私钥 的方法,这样可以减少 rsa 私钥泄露的风险,也方便PC端的远程连接与管理。

Bash

pkg install aria2

本地启动服务

Bash

aria2c --enable-rpc --rpc-listen-all

这个rpc服务默认监听的是6800端口,启动后方便下面的Web界面连接操作.

 

1.4 开启root的ssh

第一步,安装openssh并打开

apt install openssh
sshd

第二步,安装tsu,代替linux的sudo和su命令

apt install tsu

更换为root用户(需要root)

tsu


第三步,更换root密码

passwd 


第四步,用xshell登录
第五步,设置ssh自动开启,不用手动输入命令
(我还没试过,因为我的是m2的板子装的安卓系统,所以懒得试)

echo "sshd" >> ~/.bashrc
source ~/.bashrc


 


2.MariaDB(MySQL)

MariaDB 是 MySQL 关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在GNU GPL下开源。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

2.1安装 MariaDB

Termux 官方也封装了MariaDB,所以安全起来很方便:

Bash

pkg install mariadb

 

 

这里基本上会安装很顺利,但是早期用户可能出现安装失败的情况,如果安装失败的话,这个时候手动在配置目录下创建my.cnf.d文件夹即可:

Bash

$ cd /data/data/com.termux/files/usr/etc/
$ mkdir my.cnf.d

初始化数据库

早期的 Termux 安装完 MySQL是需要初始化数据库的,新版本在安装时候就已经初始化了数据库

Bash

mysql_install_db

2020年4月19日:今天安装的MySQL 发现已经存在 mysql.user 表了,无需初始化:

 

 

2.2启动 MySQL 服务

因为正常启动完成后,MySQL这个会话就一直存活,类似与debug调试一样,此时使用Ctrl + C -> 中止当前进程也无济于事,体验式就一点都不优雅,所以这里国光使用Linux自带的nohup命令将其放到后台启动。

Bash

nohup mysqld > /dev/null 2>&1 &

或者

mysqld

 

开机启动

echo "nohup mysqld > /dev/null 2>&1 &" >> ~/.bashrc
source ~/.bashrc

 

可以直接去修改密码

 

图片上这个17115此时就是mysqld的进程PID号,我们使用如下命令验证一下是否正确:

Bash

ps aux|grep mysql

可以看到果然是进程的PID号:

 

 

至于 nohup 运行的提示

Ini

nohup: ignoring input and appending output to `nohup.out'

这个是正常现象,无伤大雅,Termux 下就这样将就着用吧。

2.3 停止 MySQL 服务

Termux 下没有好的办法退出 MySQL 服务,只能强制杀掉进程了,使用如下命令格式可以轻松杀掉进程:

Bash

kill -9 PID

 

成功kill掉

 

当然每次查看进程的PID号,再杀掉进程有点繁琐了,实际上这一步可以直接这样操作:

Bash

kill -9 `pgrep mysql`

Awesome ! 优雅!

默认的两个用户

用户登录的前提是MySQL服务在后台运行,如果你按照上一小节操作把MySQL kill掉的话,请重新启动一下MySQL服务

新版本的 Termux 安装初始化数据库的时候包含两个高权限用户,一个是无法访问的 root 用户

 

提示拒绝root登录

 

另一个用户就是 Termux 的用户名,默认密码为,我们来登录看看:

Bash

mysql -u $(whoami)

 

可以成功登录 并执行SQL语句

 

那么这个无法登录的 root 用户该怎么办呢 ?不要着急 继续往下看

修改 root 密码

老版本的 Termux 的直接使用mysql_secure_installation可以设置密码,但是新版本的安全策略变更了 我们在设置密码的时候回提示当前密码不正确,所以这条路行不通了。

这里我们只能使用MySQL的另一个用户名,即 Termux 用户名登录,然后来修改 root 的密码,使用如下命令修改 root 密码:

Bash

# 登录 Termux 用户
  

mysql -u $(whoami)


# 修改 root 密码的 SQL语句

use mysql;

 

set password for 'root'@'localhost' = password('123456');

# 刷新权限 并退出
 

flush privileges;
quit; 

细节图片

 

OK! 如何和图片上差不的效果,那么修改 root 密码就成功了。

root 用户登录

修改完密码之后我们就可以美滋滋地使用 root 用户来登录了:

Bash

mysql -u root -p
Enter password: xxxxx(这里输入你的密码)

 

 

2.4远程登录 MySQL

使用 ip a 后查看 IP 地址后,尝试电脑端远程访问 Termux 的数据库:

 

 

发现默认是无法成功连接的,这个时候我们需要到数据库手动开启 root 用户的远程访问权限:

这里的 P@ssw0rd 是我的 root 密码

Sql

grant all on *.* to root@'%' identified by 'P@ssw0rd' with grant option;
flush privileges;

 

 

执行完成后 尝试PC端远程过去看看:

 

2.5 设置编码,显示中文

mariaDB最新版的mysql为5.7所以ust8mb4的COLLATE不一样mysql5.7为utf8mb4_unicode_ci,导入sql时候把COLLATE=utf8mb4_0900_ai_ci替换成COLLATE=utf8mb4_unicode_ci

vim替换

%s/COLLATE=utf8mb4_0900_ai_ci/COLLATE=utf8mb4_unicode_ci/g
show variables like 'char%';

 +--------------------------+-------------------------------------------------------+
| Variable_name            | Value                                                 |
+--------------------------+-------------------------------------------------------+
| character_set_client     | latin1                                                |
| character_set_connection | latin1                                                |
| character_set_database   | latin1                                                |
| character_set_filesystem | binary                                                |
| character_set_results    | latin1                                                |
| character_set_server     | latin1                                                |
| character_set_system     | utf8                                                  |
| character_sets_dir       | /data/data/com.termux/files/usr/share/mysql/charsets/ |
+--------------------------+-------------------------------------------------------+

 

vim /data/data/com.termux/files/usr/etc/my.cnf

在后面加入
 

[mysqld]
character_set_server=utf8mb4 
collation-server=utf8mb4_unicode_ci 
init_connect='SET NAMES utf8mb4' 
skip-character-set-client-handshake=true 

 重启ternux软件

show variables like 'char%';

+--------------------------+-------------------------------------------------------+
| Variable_name            | Value                                                 |
+--------------------------+-------------------------------------------------------+
| character_set_client     | utf8mb4                                               |
| character_set_connection | utf8mb4                                               |
| character_set_database   | utf8mb4                                               |
| character_set_filesystem | binary                                                |
| character_set_results    | utf8mb4                                               |
| character_set_server     | utf8mb4                                               |
| character_set_system     | utf8                                                  |
| character_sets_dir       | /data/data/com.termux/files/usr/share/mysql/charsets/ |
+--------------------------+-------------------------------------------------------+
 


3.超级管理员身份

实际上 Termux 不需要 root 权限也可以折腾各种各样的操作的,大家不必对 root 抱有啥幻想,本文的操作基本上没有涉及到手机要用到 root 的地步。

3.1 手机没有root

利用proot可以为手机没有root的用户来模拟一个root的环境,这里主要是经典的 Linux 文件系统布局上的模拟。

复制成功

Bash

pkg install proot -y

然后终端下面输入:

Bash

termux-chroot

即可模拟root环境,该环境模仿 Termux 中的常规Linux文件系统,但是不是真正的 root。

 

输入exit可回到普通用户的文件系统。

3.2 手机已经root

安装tsu,这是一个su的 Termux 版本,是一个真正的root权限,用来在termux上替代su,操作不慎可能对手机有安全风险。因为官方封装了,所以安装也很简单:

Bash

pkg install tsu -y

然后终端下面输入:

Bash

tsu

即可切换root用户,这个时候会弹出root授权提示,给予其root权限,效果图如下:

 


在管理员身份下,输入exit可回到普通用户身份。不过本文没有设计到 root 权限的操作,一些底层的工具可能才会需要,考虑到 root 的不安全性 和 那些工具的冷门性,国光这里就没有继续拓展

 

4.python

安装python

pkg install python

可以用linux方法换国内源

4.1 安装uiautomator2实现

python安装后,安装其相关依赖库

pkg upgrade 
pip install cython 
pkg install libxml2 libxslt
pkg install -y python ndk-sysroot clang make libjpeg-turbo 
pkg install clang 
pip install lxml 

 

pip install --pre uiautomator2
没有报错既安装成功

4.1.1 termux里安装adb

最新方法:

pkg install android-tools

方法2: 

远程复制 

  • scp Administrator@192.168.31.84:G:/adb /data/data/com.termux/files/home/

    远程复制文件名变成了G:adb,把名字改过来

  • mv G:adb adb

     

  • 2.解压刚刚下载的压缩包,之后在termux下执行 mv storage/xxxx/arm/adb $PREFIX/bin xxxx代表你的具体路径;$PREFIX/bin为固定值
  •  
  • mv adb $PREFIX/bin

     

  • 3.给adb可执行权限
    chmod +x $PREFIX/bin/adb

     

  • 4.在termux里面输入adb,弹出相关参数即正常

运行基于uiautomator2编写的代码

  • 1.在电脑上用数据线连上安装termux的手机,手机开usb调式,然后执行python -m uiautomator2 init 安装相应apk到手机上,有则省略
  • 2.在cmd下执行adb tcipip 5555 开adb网络调式 继续执行adb connect ip 连接成功则开启adb网络调式成功
  • 3.将电脑上编写好的uiautomator2代码移到手机得download下,在termux里面 执行mv ~/storage/downloads/xx.py ./
  • 4.输入python xx.py此处需要注意应将代码中的连接方法改写成d = u2.connect("0.0.0.0")

以上所有命令如无特别说明均在termux里面操作,因部分机型无法开启adb网络调试,故不能运用此方法

4,2. opencv

一、安装

pkg install wget
$PREFIX/bin/wget https://its-pointless.github.io/setup-pointless-repo.sh
bash setup-pointless-repo.sh
apt install opencv

 

二、验证

python

import cv2

https://www.codeleading.com/article/35522499063/

5.crontab定时

pkg install cronie

使用vim编辑

发现是没有下载vi编辑器,所以需要把默认编辑器改成vim

echo "export EDITOR=vim" >> ~/.bashrc
source ~/.bashrc

注意;python是绝对路径,不然不执行 

50 19 * * * /data/data/com.termux/files/usr/bin/python3 /data/data/com.termux/files/home/yys/switch/ledoff.py

 

使用crontab进行定时任务
首先防止设备休眠进程停止

termux-wake-lock


其次开启crontab,执行命令

crond

报错

~ $ crond
crond: can't lock /data/data/com.termux/files/usr/var/run/crond.pid, otherpid may be 11468: Try again

 

删除了crond.pid

rm -rf /data/data/com.termux/files/usr/var/run/crond.pid

然后

crond

添加定时任务 

crontab -e


加入一行

30 2 * * * python ~/dailyReport.py >> ~/dailyReport.log

这一行的意思每天凌晨两点半开始运行命令python dailyReport.py >> dailyReport.log。

注意事项
请保持termux后台一直在运行,否则会失效。
并且这个软件似乎并不怎么费电。
如果定时任务没有执行,可能是crond服务没有开启,再执行一遍crond即可。
更详细的Termux教程及配置
请参考国光。Termux进阶配置
https://www.sqlsec.com/2018/05/termux.html

 

开机启动开启crontab

echo "rm -rf /data/data/com.termux/files/usr/var/run/crond.pid" >> ~/.bashrc
echo "crond" >> ~/.bashrc
source ~/.bashrc

 

6.tesseract-ocr

 Termux 安装 tesseract-ocr

apt insatll tesseract

数据chi_sim.traineddata包放在/data/data/com.termux/files/usr/share/tessdata下面

使用ssh复制

scp -r yys@192.168.31.158:/home/yys/test/chi_sim.traineddata /data/data/com.termux/files/usr/share/tessdata/