JSShell:一個基於python的互動式Shell

天府雲創發表於2017-11-27

JSShell

本文將給大家介紹一款基於Web的多使用者互動式Shell,該工具採用Python語言編寫,伺服器端使用的是Flask框架,而客戶端當然就是JavaScript和HTML組成的了。我當初在開發JSShell的時候只是想在測試和研究的過程中用它來遠端除錯瀏覽器的網路通訊和資訊處理等活動,但是我現在意識到了這款工具的作用遠遠不止於此,所以請各位不要將其用於惡意目的,作者Daniel Abeles對此一概不負責。

工具安裝

話不多說,先上GitHub傳送門【點我】。

我們建議使用虛擬環境來安裝JSShell,作者使用的是Python3.6,但JSShell也支援3.6之前的Python版本。

Pyenv

pyenv virtualenv -p python3.6 venv
pyenv activate venv
virtualenv

virtualenv -p python3.6 venv
source venv/bin/activate

一鍵配置環境

pip install -r requirements.txt

JSShell的特點

-支援多客戶端;

-支援迴圈DOM物件;

-預生成指令碼;

-命令佇列;

工具執行

建立資料庫:

python db_handler.py create

開啟伺服器(後臺):

python run.py

通過瀏覽器訪問伺服器地址:

如果你的伺服器在本地,那麼你可以直接用瀏覽器訪問http://localhost:5000(埠可能會不同)

開啟互動式Shell:

python shell.py

可選項:預生成指令碼

每當新的客戶端進行註冊時,這些指令碼都將會執行,不過你也可以根據你的需要來進行修改,一切都取決於你自己:)

工具使用

這個Shell介面給我們提供了多種可用的操作指令,你可以使用‘help’命令來檢視所有命令,終端介面如下所示:

你可以使用命令佇列來申請執行多個命令,客戶端將會一個一個執行這些命令。所有的命令都會在相同的環境(context)中執行,所以你可以一次性執行多個相關命令。

如果你想檢視傳送給客戶端的命令,首先你需要選擇一個客戶端:

>> select 1

然後使用‘coms’命令來檢視所有傳送給該客戶端的命令:

(Client 1) >> coms

檢視所有的命令以及相應的輸出結果:

(Client 1) >> com 1

工作流程

當所有的安裝和配置都已完成之後,JSShell的工作流程如下:

1.  客戶端訪問主頁http://localhost:5000/;

2.  然後向伺服器端傳送一個‘register’請求;

3.  等待使用者輸入命令;

4.  與此同時,你可以使用shell.py指令碼並在伺服器端執行命令;

5.  客戶端從伺服器端獲取命令,當其得到了新的命令之後,會立刻將其加入佇列並依次執行;

6.  命令執行完成之後,會將執行結果返回給伺服器端;

7.  現在,我們可以使用‘coms’命令來檢視輸出結果了;

資料庫管理

我們在這裡給大家提供了一個名為db.handler.py的指令碼,這個指令碼包含多種資料庫管理功能,你可以用它來管理和測試你的資料庫。

相關文章