gotty 是一個簡單的基于 go 語言的指令行工具,它可以将你的終端(tty)作為 web 程式共享。它會将指令行工具轉換為 web 程式。
它使用 chrome os 的終端仿真器(hterm)來在 web 浏覽器上執行基于 javascript 的終端。重要的是,gotty 運作了一個 web 套接字伺服器,它基本上是将 tty 的輸出傳輸給用戶端,并從用戶端接收輸入(即允許用戶端的輸入),并将其轉發給 tty。
<a target="_blank"></a>
<code># go get github.com/yudai/gotty</code>
上面的指令會在你的 <code>gobin</code> 環境變量中安裝 gotty 的二進制,嘗試檢查下是否如此:
<code># $gopath/bin/</code>

檢查 gobin 環境
要運作它,你可以使用 gobin 環境變量并用指令補全:
<code># $gobin/gotty</code>
另外,要不帶完整指令路徑運作 gotty 或其他 go 程式,使用 <code>export</code> 指令将 <code>gobin</code> 變量添加到<code>~/.profile</code> 檔案中的 <code>path</code> 環境變量中。
<code>export path="$path:$gobin"</code>
儲存檔案并關閉。接着運作 <code>source</code> 來使更改生效:
<code># source ~/.profile</code>
運作 gotty 指令的正常文法是:
<code>usage: gotty [options] <linux command here> [<arguments...>]</code>
<code># gotty df -h</code>
gotty 預設會在 8080 啟動一個 web 伺服器。在浏覽器中打開 url:<code>http://127.0.0.1:8080/</code>,你會看到運作的指令仿佛運作在終端中一樣:
gotty 檢視 linux 磁盤使用率
你可以在 <code>~/.gotty</code> 配置檔案中修改預設選項以及終端,如果該檔案存在,它會在每次啟動時加載這個檔案。
這是由 getty 指令讀取的主要自定義檔案,是以,按如下方式建立:
<code># touch ~/.gotty</code>
<code>// listen at port 9000 by default</code>
<code>port = "9000"</code>
<code>// enable tsl/ssl by default</code>
<code>enable_tls = true</code>
<code>// hterm preferences</code>
<code>// smaller font and a little bit bluer background color</code>
<code>preferences {</code>
<code>font_size = 5,</code>
<code>background_color = "rgb(16, 16, 32)"</code>
<code>}</code>
你可以使用指令行中的 <code>--html</code> 選項設定你自己的 <code>index.html</code> 檔案:
<code># gotty --index /path/to/index.html uptime</code>
由于 gotty 預設不提供可靠的安全保障,你需要手動使用下面說明的某些安全功能。
請注意,預設情況下,gotty 不允許用戶端輸入到tty中,它隻支援視窗縮放。
但是,你可以使用 <code>-w</code> 或 <code>--permit-write</code> 選項來允許用戶端寫入 tty,但是并不推薦這麼做因為會有安全威脅。
<code># gotty -w vi fossmint.txt</code>
以下是從 web 浏覽器看到的 vi 界面(像平常一樣使用 vi 指令):
gotty web vi 編輯器
嘗試激活基本身份驗證機制,這樣用戶端将需要輸入指定的使用者名和密碼才能連接配接到 gotty 伺服器。
以下指令使用 <code>-c</code> 選項限制用戶端通路,以向使用者詢問指定的憑據(使用者名:<code>test</code> 密碼:<code>@67890</code>):
<code># gotty -w -p "9000" -c "test@67890" glances</code>
使用基本驗證運作 gotty
限制通路伺服器的另一種方法是使用 <code>-r</code> 選項。gotty 會生成一個随機 url,這樣隻有知道該 url 的使用者才可以通路該伺服器。
<code># gotty -r --title-format "gotty - {{ .command }} ({{ .hostname }})" glances</code>
以下是從浏覽器中看到的上面的指令的結果:
使用 gotty 随機 url 用于 glances 系統監控
因為預設情況下伺服器和用戶端之間的所有連接配接都不加密,當你通過 gotty 發送秘密資訊(如使用者憑據或任何其他資訊)時,你需要使用 <code>-t</code> 或 <code>--tls</code> 選項才能在會話中啟用 tls/ssl:
預設情況下,gotty 會讀驗證書檔案 <code>~/.gotty.crt</code> 和密鑰檔案 <code>~/.gotty.key</code>,是以,首先使用下面的<code>openssl</code> 指令建立一個自簽名的證書以及密鑰( 回答問題以生成證書和密鑰檔案):
<code># openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt</code>
按如下所示,通過啟用 ssl/tls,以安全方式使用 gotty:
<code># gotty -tr --title-format "gotty - {{ .command }} ({{ .hostname }})" glances</code>
<code># gotty tmux new -a -s gotty glances</code>
要讀取不同的配置檔案,像下面那樣使用 <code>–config "/path/to/file"</code> 選項:
<code># gotty -tr --config "~/gotty_new_config" --title-format "gotty - {{ .command }} ({{ .hostname }})" glances</code>
要顯示 gotty 版本,運作指令:
<code># gotty -v</code>
原文釋出時間為:2017-04-25
本文來自雲栖社群合作夥伴“linux中國”