Termux应用详解

作者: TSIANG | 来源:发表于2018-01-10 21:24 被阅读12980次

    起因

    几个月前学了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远程手机执行爬虫

    相关文章

      网友评论

      • C0mpass:进入设置清华的源的那个界面怎么退出来啊?音量键+e 没有反应啊?
      • 7907dbb5ef57:请问一下,我用的清华的源,但是安装openssh都说找不到,是什么情况啊
      • d583e7a1a546:为什么我无法安装lxml
      • 5970f12bbd73:请问,为什么我在apt install python的时候返回错误,说unable to locate package python?
        bc4e74faf9a8:源没有配置好 可能是因为国外的源网速太差 换成清华的试试
      • Gary_0979:帮大忙了,非常感谢

      本文标题:Termux应用详解

      本文链接:https://www.haomeiwen.com/subject/xztanxtx.html