get-host-ip
這是一款用rust
制作的命令行工具。其被設計用來從C:WindowsSystem32ipconfig.exe
的執行結果內提取出指定【網卡】的屬性值。比如,從電腦本的【無線局域網適配器WLAN
】中提取出【IPv4
地址】字符串值。
使用場景
從Windows Subsystem for Linux
(比如,Ubuntu-20.04
)讀取其宿主主機(比如,Windows 11
)無線物理網卡的IP
地址。進而,將其作為兩項重要功能的配置項入參:
-
投影
WSL2
圖形界面至Windows
宿主桌面系統顯示。
-
無論是將整個
Gnome
桌面系統投影作為Windows
環境下的一個應用程序窗口,還僅只是投影某個Linux GUI
應用程序,X11 Server
都需要借助$DISPLAY
環境變量明確地知曉XSTATA
的準確IP
位置。請不要自做聰明地認為127.0.0.1
可能搪塞過去。127.0.0.1
是指向WSL2
子系統自身,而不是宿主主機。 -
關于
WSL2
桌面投影的更多技術細節,可參見我早先的另一篇文章為 Rust+QT 編程搭建【偽】win32 開發環境。還算是詳細吧!
-
使
Windows
宿主操作系統共享VPN
客戶端給WSL2
子系統。
-
從操作上,執行
export HTTP_PROXY=***
指令要比在Linux
系統里安裝與配置另一個Clash
實例要省心多了。 -
從后續維護上,對
VPN
客戶端的軟件升級與配置更新僅需要做一遍操作更節省時間。 -
從經濟上,更少的在線客戶端數量也更便宜。
曾經的糾結
早先我也曾經使用nodejs
腳本程序實現了相同的功能。但,node
虛擬機首次啟動時間著實有些長了。雖然該長延時弊端在交互式bash
上下文中并不明顯(畢竟咱敲鍵盤也不快,還時不時地敲錯字母),但當被置于.bashrc
內執行時,其造成的shell
會話初始化阻滯就讓人有點不好接受了(畢竟,每次開個新shell
窗口都得明顯黑幕個把秒鐘,體驗著實有些兒差)。所以,我決心使用rust
重構此“熱”指令。效果明顯,幾乎一閃便可完成shell
初始化。
命令行指令-用法
$ get-host-ip --help 獲取 wsl 宿主機器的物理 IP 地址 Usage: get-host-ip [OPTIONS] Options: -s, --section
更詳細圖例
返回結果
get-host-ip
執行輸出就是沒有結尾換行符的IP
地址字符串。若將該指令添加入$PATH
,那么在Shell
求值表達式內可以直接
export HOST_IP=$(get-host-ip);
鏈接庫依賴
因為Windows cmd
指令輸出文本內容的字符集是cp936
,而不是UTF-8
。所以,get-host-ip
需要依賴操作系統預置的字符集轉換動態鏈接庫libiconv
,來完成cp936 -> UTF-8
的字符集轉換。
Linux
操作系統
大部分主流Linux OS
都包含有libiconv
。若你的Linux OS
版本比較早或是compact
版而缺失了libiconv
也不必慌。按如下方式補裝即可:
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz tar -xzvf libiconv-1.9.1.tar.gz cd libiconv-1.9.1.tar.gz ./configure --prefix=/usr/local sudo make -j8 sudo make install sudo ln -s /usr/local/lib/libiconv.so /usr/lib/libiconv.so sudo ln -s /usr/local/lib/libiconv.so.2 /usr/lib/libiconv.so.2
Windows
操作系統
要么,從setup直接下載安裝包,并本地安裝之。缺點就是會“污染”你的PATH
環境變量。
要么,從binary下載預編譯包。在解壓縮之后,將其下的bin
目錄添加到你的編譯環境變量RUST_FLAGS
內。比如,
set RUST_FLAGS=-L C:libiconv-1.9.2-1-binbin
吐槽
同一款libiconv
鏈接庫怎么對Linux
與Windows
操作系統提供了不同名的導出函數呢?這個“缺德的”命名差異導致我在【編譯期·動態鏈接】環節卡住了好幾天。相對于Linux
版的鏈接庫導出函數名,Windows
版的每個導出函數都有一個lib
前綴 —— 故意的吧?真要命。
審核編輯 :李倩
-
命令
+關注
關注
5文章
678瀏覽量
21987 -
腳本
+關注
關注
1文章
387瀏覽量
14834 -
Rust
+關注
關注
1文章
228瀏覽量
6574
原文標題:get-host-ip
文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論