Termux 安装使用总结
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 软件包,没有安装的话参考上一个小结进行安装。实现这个效果有两大种方法:
-
SSH 通过密码认证连接
-
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.pub
,known_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.pub
,known_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界面连接操作.
第一步,安装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端远程过去看看:
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 的不安全性 和 那些工具的冷门性,国光这里就没有继续拓展
安装python
pkg install python
可以用linux方法换国内源
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:
- 1.下载adb文件解压 链接:https://pan.baidu.com/s/1FjS67MuALc2NuRfR3IsWug 提取码:lppk
远程复制
-
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网络调试,故不能运用此方法
一、安装
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
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
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/
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!