Termux應(yīng)用詳解

起因

幾個(gè)月前學(xué)了python,寫了幾個(gè)練手的爬蟲,要運(yùn)行很久才能下載到足夠的數(shù)據(jù),掛機(jī)一夜似乎有點(diǎn)費(fèi)電,我還心疼我的電腦呢。就一直想拿一個(gè)安卓手機(jī)來跑,當(dāng)時(shí)只當(dāng)個(gè)想法,并沒有動(dòng)手實(shí)施。結(jié)果最近恰逢老爸換手機(jī),于是舊手機(jī),一個(gè)紅米note2被我拿來了,于是開始了我的折騰之旅。我從未接觸過linux,但幸好這方面的教程已經(jīng)很多,通過大量搜索和實(shí)踐,走了很多彎路,總算能完成預(yù)期目標(biāo)了。

開始前

最好把手機(jī)root,雖然Termux不需要root權(quán)限也可以運(yùn)行,但root后可以用管理員權(quán)限,cd 進(jìn)入手機(jī)存儲(chǔ)目錄,后面可以干的事更多。
我把手機(jī)刷了miui7的開發(fā)版,反正也不會(huì)拿來用,隨便刷。
root后,推薦裝一個(gè)re explorer,用來和電腦傳文件。因?yàn)殡娔X沒法直接訪問手機(jī)內(nèi)置空間。

為什么是Termux

Termux是我們的主角,相當(dāng)于安卓上的linux虛擬機(jī)(這樣說肯定不對(duì),但權(quán)且這么理解吧),下載地址Google Play-Termux。
一開始我聽說GNU Root Debian功能更加強(qiáng)大,嘗試安裝這個(gè)花了很長時(shí)間。在google play上下載apk安裝后,每次打開都閃退,底下提醒GNU Root not yet installed...我按照提示,以為還要安裝GNU Root,正好google play上也有一個(gè)這名字的app,但安裝上后仍無法運(yùn)行。后來搜索發(fā)現(xiàn),有人稱此app無法在聯(lián)發(fā)科CPU的手機(jī)上運(yùn)行(貼吧-實(shí)戰(zhàn)紅米手機(jī)安裝Debian系統(tǒng)),不巧紅米note2就是聯(lián)發(fā)科的,倒霉...
所以我就選擇了Termux,可以說是因?yàn)闆]辦法,但事實(shí)證明,Termux很強(qiáng)大,絕對(duì)夠用。

Termux的安裝

我是按照知乎-如何讓自己在電腦上寫的python腳本在手機(jī)或安卓系統(tǒng)上運(yùn)行呢?上的回答來安裝并配置Termux和python環(huán)境的?;揪褪牵?/p>

1. 更新包

apt update
apt upgrade

2. 修改源

export EDITOR=vi
apt edit-sources

在vi編輯器里把第二行替換成以下內(nèi)容(清華鏡像源)

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

在vi編輯器里,輸入第一個(gè)i進(jìn)入編輯模式(插入),下面會(huì)給出提示“INSERT”,此時(shí)再打字就是在光標(biāo)左邊插入字符。等修改完畢后,按住音量,同時(shí)輸入e,即可退出編輯模式。再輸入:wq保存并退出vi。

3. 安裝python3與相關(guān)模塊

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

我目前僅會(huì)爬蟲,因此暫時(shí)只安裝了幾個(gè)用得到的模塊。

# 安裝爬蟲相關(guān)模塊

# 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了,有幾點(diǎn)技巧記下來。


運(yùn)行python

1. 管理員身份

默認(rèn)是沒有管理員權(quán)限的,在執(zhí)行一些敏感操作時(shí)會(huì)提示Permission denied,或者在cd到一些目錄時(shí)會(huì)提示無此文件夾。
輸入su進(jìn)入管理員身份,第一次進(jìn)入時(shí)仍會(huì)提示Permission denied,但此時(shí)Termux已經(jīng)申請(qǐng)了獲取手機(jī)的root權(quán)限,進(jìn)入安全中心的root權(quán)限管理,給Termux通過即可。此時(shí)再次su就可以成功了。

su進(jìn)管理員身份

在管理員身份下,輸入exit可回到普通用戶身份。
但Termux環(huán)境的根目錄是/data/data/com.termux/files,而在su后的PATH環(huán)境變量是/sbin/su:/system/bin,很多命令就用不了(貼吧-Termux下root權(quán)限問題的解決辦法),比如此時(shí)就無法進(jìn)入python。
此時(shí)無法打開python

但按照上個(gè)網(wǎng)頁的說法,tsu命令修復(fù)了PATH變量,但需要先安裝。

# 安裝tsu
pkg install tsu

但我嘗試了一下,tsu后執(zhí)行python仍提示未安裝,我沒有繼續(xù)往下試,也許能行?

tsu提示沒有安裝python

2. 終止程序運(yùn)行

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

3. 輸入法

我用的谷歌輸入法,一些常用的特殊符號(hào)可以在qwerty鍵盤上長按得到,比較方便。也有人推薦黑客鍵盤,試了下,不能輸入中文,在別的地方還得切換,麻煩。
但不管用什么輸入法,手機(jī)上敲代碼都太反人類了,下面介紹一下通過筆記本鍵盤連接Termux的方法。

遠(yuǎn)程鍵盤

我個(gè)人試驗(yàn)成功了兩種方法,都無需在電腦上安裝軟件,可以在命令行中運(yùn)行。但為了簡便起見,推薦安裝XShell5。

1. Remote Keyboard

通過Telnet方式與電腦通訊,下載地址Google Play-Remote Keyboard幾乎無需配置,極為簡便
軟件安裝后打開,即顯示以下界面

Remote Keyboard界面

此時(shí)點(diǎn)擊上方Select Keyboard,將默認(rèn)輸入法選為Remote Keyboard。
然后在電腦上進(jìn)入命令行,輸入telnet [host] [port]。比如按照上圖,在命令行輸入:

telnet 192.168.1.103 2323

即可進(jìn)入telnet界面,此時(shí)在該窗口按下的任何字符都可以在手機(jī)的輸入界面上顯示。
如果上句報(bào)錯(cuò)telnet不是有效命令,按照百度經(jīng)驗(yàn)-Win7如何開啟Telnet服務(wù)所說開啟服務(wù)。
但此方法有幾個(gè)嚴(yán)重缺點(diǎn):

  1. 最重要的,會(huì)掉線,而且有時(shí)掉線后無論如何都無法重新連接上。
  2. 有延遲,偶爾掉包。
  3. 不支持組合鍵。

2. SSH

這個(gè)方法比較高級(jí),但配置很麻煩,我弄了一天。當(dāng)然有l(wèi)inux基礎(chǔ)的人能很快上手,不懂的按照我的步驟,也能很快配置完成。
手機(jī)上操作:

# 安裝openssh
apt install openssh

安裝完成后會(huì)在手機(jī)的data\data\com.termux\files\home下創(chuàng)建.ssh文件夾,里面有文件authorized_keys,用于儲(chǔ)存可以通過驗(yàn)證的機(jī)器公鑰。
電腦上操作:
在電腦命令行輸入ssh,看是否報(bào)錯(cuò)。如果報(bào)錯(cuò),下載并安裝OpenSSH,配置環(huán)境變量。確保命令行輸入ssh后正常運(yùn)行。
命令行輸入

ssh-keygen -t rsa

執(zhí)行完成后,會(huì)在C:\Users\username\.ssh文件夾下創(chuàng)建三個(gè)文件id_rsa, id_rsa.pub, known_hosts。分別是私鑰、公鑰和連接記錄,第一個(gè)文件不要泄露。
然后通過各種方式將id_rsa.pub文件復(fù)制到手機(jī)的data\data\com.termux\files\home\.ssh文件夾內(nèi)。有人用adb push,我不會(huì),用的復(fù)制粘貼大法...復(fù)制到電腦能訪問到的sd卡中,再在手機(jī)上用re explorer移動(dòng)到目標(biāo)文件夾(手機(jī)必須root才可以做到)。
手機(jī)上操作:
首先cd到.ssh文件夾,然后將公鑰內(nèi)容復(fù)制到驗(yàn)證文件中

# 復(fù)制公鑰內(nèi)容到驗(yàn)證文件
cat ./id_rsa.pub >> authorized_keys

再獲取用戶名,比如說u0_a118

whoami

還需要保證.ssh文件夾的權(quán)限為700(即rwx------),而且用戶為u0_a118。
通過執(zhí)行ll -a命令可以查看當(dāng)前路徑下的所有文件和文件夾權(quán)限,但不能在普通用戶權(quán)限下執(zhí)行該命令。

# 獲取管理員權(quán)限
su
# 進(jìn)入home目錄
cd data\data\com.termux\files\home
# 查看當(dāng)前路徑文件和文件夾權(quán)限
ll -a
執(zhí)行后如圖,紅框內(nèi)為.ssh文件夾權(quán)限和用戶

若結(jié)果不對(duì),則需要修改

# 修改權(quán)限
chmod 700 .ssh
# 修改用戶和組
chown u0_a118:u0_a118 .ssh

同樣查看authorized_keys文件權(quán)限是否是600(rw-------),用戶是否正確。不是的話按上述方法修改。
此時(shí)已經(jīng)設(shè)置完成,通過sshd命令即可開啟ssh服務(wù)器。

# 指定端口9000
sshd -p 9000

電腦上操作:
命令行輸入ssh [username]@[host] -p [port]即可連接,比如

ssh u0_a118@172.16.2.11 -p 9000
成功連接到Termux!

此后,在電腦命令行輸入指令,手機(jī)即可執(zhí)行(但無任何顯示),甚至手機(jī)可以熄屏。完美!
最后,以成功運(yùn)行以前寫的爬蟲程序圖結(jié)尾。


電腦通過SSH遠(yuǎn)程手機(jī)執(zhí)行爬蟲
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容