99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀再見云服務(wù)器!教你將 Python 腳本快速部署在手機(jī)上(詳細(xì))
再見云服務(wù)器!教你將 Python 腳本快速部署在手機(jī)上(詳細(xì))
2021-05-19
收藏

來源:AirPython

作者:星安果

再見云服務(wù)器!教你將 Python 腳本快速部署在手機(jī)上(詳細(xì))

1. 前言

大家好,我是安果!

最近有讀者后臺給我留言,說這段時間云服務(wù)器漲價了,自己日常就運行一些簡單的腳本,因此不太想入坑云服務(wù)器,問我能不能提供一個不一樣的思路給他

本篇文章將介紹一款軟件,即:iSH

這款 App 功能非常強(qiáng)大,可以運行各種腳本,適用于需求不是很大的小伙伴

2. 介紹

iSH 是一款運行在 iOS 系統(tǒng)上的 App,可以運行 Linux Shell,底層操作系統(tǒng)基于「 Alpine 」

PS:Alpine 是一個超輕量級的 Linux 發(fā)行版,是一個由社區(qū)開發(fā)的 Linux 操作系統(tǒng),該操作系統(tǒng)以安全為理念,面向 x86 路由器、防火墻、虛擬專用網(wǎng)、IP 電話盒及服務(wù)器而設(shè)計

安裝有 2 種方式,分別是:

  • App Store 搜索關(guān)鍵字「 iSH 」下載
  • Github 下載源碼,使用 Xcode 編譯安裝

App 界面如下,從左往右,功能鍵包含:Tab 鍵、Ctrl 鍵、ESC 鍵、滾動鍵( Arrow 鍵)、軟件設(shè)置、快速粘貼鍵、隱藏輸入法

其中,

Tab 鍵、Ctrl 鍵、ESC 鍵和 PC 端使用方法一致

滾動鍵用于光標(biāo)移動和歷史命令切換( 通過向上、向下滑動來切換歷史命令 )

設(shè)置中,可以對外觀主題、文字樣式、應(yīng)用圖標(biāo)、文件管理進(jìn)行查看設(shè)置

再見云服務(wù)器!教你將 Python 腳本快速部署在手機(jī)上(詳細(xì))

3. 更換源及安裝依賴

由于默認(rèn)的源在國外,下載依賴很慢,我們需要更換源

使用 vim 命令編輯文件 「 /etc/apk/repositories 」,刪除默認(rèn)的源,更換為阿里或者清華的源

# 編輯文件
vim /etc/apk/repositories
# 替換為國內(nèi)的源
# 阿里源

https://mirrors.aliyun.com/alpine/v3.11/main


https://mirrors.aliyun.com/alpine/v3.11/community

編輯完成后,保存退出

下面就可以安裝 Python 及常見依賴庫了

3-1 安裝 Python3

iSH 使用命令「 apk add app_name 」安裝應(yīng)用程序

# 安裝python3
apk add python3

3-2 安裝 pip

首先,我們使用「 wget 」命令下載 pip 文件,然后安裝 pip

# 下載get-pip文件
wget
https://bootstrap.pypa.io/get-pip.py

# 安裝
python3 get-pip.pya

3-3 安裝依賴包

以最常見的 requests 為例,直接使用 pip3 安裝即可

# 安裝依賴
pip3 install requests

需要注意的是,iSH 安裝速度比較慢,需要耐心等待

再見云服務(wù)器!教你將 Python 腳本快速部署在手機(jī)上(詳細(xì))

4. 執(zhí)行腳本

由于手機(jī)上編輯腳本效率太低,大部分時候我們都是在 PC 端編寫完成,然后導(dǎo)入到 iSH 中運行

常見方案為 iSH + SSH + Git,為了演示方便,我這里使用「 Web Server for Chrome 」在 PC 端搭建了文件共享服務(wù)器,然后將腳本文件放置到共享目錄

然后再 iSH 終端,使用 wget 命令直接下載腳本文件

最后,進(jìn)入到腳本文件夾目錄,運行腳本文件即可

# 下載腳本文件壓縮
wget
http://192.168.2.121:8887/rsc.zip

# 解壓文件
unzip rsc.zip
# 進(jìn)入到文件夾目錄
cd rsc/
# 運行腳本文件
python3 main_proj.py

5. 拓展一下

iSH 常見命令如下:

5-1 安裝

apk add <name>
apk add vim
apk add python3

5-2 卸載

# 卸載應(yīng)用
apk del <name>

5-3 搜索應(yīng)用

# 搜索應(yīng)用
# PS:可以先搜索,然后再安裝
apk search <name>

5-4 更新包管理器

iSH 使用 Alpine 包管理器,使用下面的命令可以更新 Alpine 存儲庫列表

# 更新存儲庫列表
apk update

6. 總結(jié)

iSH 作為一款 iOS 端的應(yīng)用,可以非常便捷地完成 Python 腳本的部署運行,當(dāng)然 Shell 腳本也是支持的

另外,iSH 可以開啟 SSH Server 供遠(yuǎn)程連接,這部分內(nèi)容及 iSH 詳細(xì)使用文檔我已經(jīng)寫成 PDF 并上傳到后臺,回復(fù)關(guān)鍵字「 iSH 」獲取完整內(nèi)容

再見云服務(wù)器!教你將 Python 腳本快速部署在手機(jī)上(詳細(xì))

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }