日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

為何選擇文字用戶界面(TUI)?

許多人每日都在使用終端,因此,文字用戶界面Text User Interface(TUI)逐漸顯示出其價(jià)值。它能減少用戶輸入命令時(shí)的誤差,讓終端操作更高效,提高生產(chǎn)力。

以我的個(gè)人使用情況為例:我每日會(huì)通過家用電腦遠(yuǎn)程連接到我使用 linux 系統(tǒng)的實(shí)體 PC。所有的遠(yuǎn)程網(wǎng)絡(luò)連接都通過私有 VPN 加密保護(hù)。然而,當(dāng)我需要頻繁重復(fù)輸入命令進(jìn)行連接時(shí),這種經(jīng)歷實(shí)在令人煩躁。

于是,我創(chuàng)建了下面這個(gè) Bash 函數(shù),從而有所改進(jìn):

export REMOTE_RDP_USER="myremoteuser"
function remote_machine() {
  /usr/bin/xfreerdp /cert-ignore /sound:sys:alsa /f /u:$REMOTE_RDP_USER /v:$1 /p:$2
}

但后來,我發(fā)現(xiàn)自己還是頻繁地執(zhí)行下面這條命令(在一行中):

remote_pass=(/bin/cat/.mypassfile) remote_machine $remote_machine $remote_pass

這太煩了。更糟糕的是,我的密碼被明文存儲(chǔ)在我的電腦上(我雖然使用了加密驅(qū)動(dòng)器,但這點(diǎn)依然令人不安)。

因此,我決定投入一些時(shí)間,編寫一個(gè)實(shí)用的腳本,從而更好地滿足我的基本需求。

我需要哪些信息才能連接到遠(yuǎn)程桌面?

實(shí)際上,要連接到遠(yuǎn)程桌面,你只需提供少量信息。這些信息需要進(jìn)行結(jié)構(gòu)化處理,所以一個(gè)簡(jiǎn)單的 JSON 文件就能夠滿足要求:

{"machines": [
  {
  "name": "machine1.domAIn.com",
  "description": "Personal-PC"
  },
  {
  "name": "machine2.domain.com",
  "description": "Virtual-Machine"
  }
  ],
"remote_user": "MYUSER@DOMAIN",
"title" : "MY COMPANY RDP connection"
}

盡管在各種配置文件格式中,JSON 并非最佳選擇(例如,它不支持注解),但是 Linux 提供了許多工具通過命令行方式解析 JSON 內(nèi)容。其中,特別值得一提的工具就是 jq。下面我要向你展示如何利用它來提取機(jī)器列表:

/usr/bin/jq --compact-output --raw-output '.machines[]| .name' 
  $HOME/.config/scripts/kodegeek_rdp.json) 
  "machine1.domain.com" "machine2.domain.com"

jq 的文檔可以在 這里 找到。另外,你也可以直接將你的 JSON 文件復(fù)制粘貼到 jq play,試用你的表達(dá)式,然后在你的腳本中使用這些表達(dá)式。

既然已經(jīng)準(zhǔn)備好了連接遠(yuǎn)程計(jì)算機(jī)所需的所有信息,那現(xiàn)在就讓我們來創(chuàng)建一個(gè)美觀實(shí)用的 TUI 吧。

Dialog 的幫助

Dialog 是那些你可能希望早些認(rèn)識(shí)的、被低評(píng)估的 Linux 工具之一。你可以利用它構(gòu)建出一個(gè)井然有序、簡(jiǎn)介易懂,并且完美適用于你終端的用戶界面。

比如,我可以創(chuàng)建一個(gè)包含我喜歡的編程語言的簡(jiǎn)單的復(fù)選框列表,且默認(rèn)選擇 Python/ target=_blank class=infotextkey>Python:

dialog --clear --checklist "Favorite programming languages:" 10 30 7
  1 Python on 2 JAVA off 3 Bash off 4 Perl off 5 Ruby off

使用 dialog 和 jq 在 Linux 上編寫高效終端 TUI

我們通過這條命令向 dialog 下達(dá)了幾個(gè)指令:

  • 清除屏幕(所有選項(xiàng)都以 -- 開頭)
  • 創(chuàng)建一個(gè)帶有標(biāo)題的復(fù)選框(第一個(gè)位置參數(shù))
  • 決定窗口尺寸(高度、寬度和列表高度,共 3 個(gè)參數(shù))
  • 列表中的每條選項(xiàng)都由一個(gè)標(biāo)簽和一個(gè)值組成。

驚人的是,僅僅一行代碼,就帶來了簡(jiǎn)潔直觀和視覺友好的選擇列表。

關(guān)于 dialog 的詳細(xì)文檔,你可以在 這里 閱讀。

整合所有元素:使用 Dialog 和 JQ 編寫 TUI

我編寫了一個(gè) TUI,它使用 jq 從我的 JSON 文件中提取配置詳細(xì)信息,并且使用 dialog 來組織流程。每次運(yùn)行,我都會(huì)要求輸入密碼,并將其保存在一個(gè)臨時(shí)文件中,腳本使用后便會(huì)刪除這個(gè)臨時(shí)文件。

這個(gè)腳本非常基礎(chǔ),但它更安全,也使我能夠?qū)W⒂诟匾娜蝿?wù)

分享到:
標(biāo)簽:終端
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定