精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一款用rust制作的命令行工具

jf_wN0SrCdH ? 來源:Rust語言中文社區 ? 2023-05-04 09:56 ? 次閱讀

get-host-ip

這是一款用rust制作的命令行工具。其被設計用來從C:WindowsSystem32ipconfig.exe的執行結果內提取出指定【網卡】的屬性值。比如,從電腦本的【無線局域網適配器WLAN】中提取出【IPv4地址】字符串值。

使用場景

Windows Subsystem for Linux(比如,Ubuntu-20.04)讀取其宿主主機(比如,Windows 11)無線物理網卡的IP地址。進而,將其作為兩項重要功能的配置項入參:

  1. 投影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

ipconfig.exe 返回結果中的【主分類】標題 [default: "無線局域網適配器 WLAN"] -e, --entry ipconfig.exe 返回結果中的【主分類】下各個條目的標簽名 [default: "IPv4 地址"] -h, --help Print help -V, --version Print version

更詳細圖例

c363230a-e8b5-11ed-ab56-dac502259ad0.png

返回結果

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鏈接庫怎么對LinuxWindows操作系統提供了不同名的導出函數呢?這個“缺德的”命名差異導致我在【編譯期·動態鏈接】環節卡住了好幾天。相對于Linux版的鏈接庫導出函數名,Windows版的每個導出函數都有一個lib前綴 —— 故意的吧?真要命。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 命令
    +關注

    關注

    5

    文章

    678

    瀏覽量

    21987
  • 腳本
    +關注

    關注

    1

    文章

    387

    瀏覽量

    14834
  • Rust
    +關注

    關注

    1

    文章

    228

    瀏覽量

    6574

原文標題:get-host-ip

文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    在STM32實現命令行

    工作中的開發環境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機也要使用命令行工具,百度了
    發表于 12-09 11:32 ?2285次閱讀

    Linux命令行工具

    Linux 新手往往對命令行心存畏懼。部分原因是因為需要記憶大量的命令,畢竟掌握命令是高效使用命令行的前提不幸的是,學習這些命令并無捷徑,
    發表于 07-25 08:10

    caxa命令行中的應用

    caxa命令行中的應用 命令行對于大多用戶來說往往只是輸入數據的作用,但是其中的奧妙還有很多,下面就給大家
    發表于 10-18 18:18 ?2281次閱讀

    CMD的命令行高級教程

    CMD的命令行高級教程
    發表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級教程

    監控jvm常用的5個命令行工具

    常用的幾個命令行工具有jps、jstat、jinfo、jmap、jstack等。這幾個工具可以安裝openjdk-devel-debug包。
    的頭像 發表于 02-06 14:47 ?5843次閱讀
    監控jvm常用的5個<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>

    實用 Linux 命令行使用技巧集錦

    下面介紹的都是命令行工具,這些工具在日常工作中都很有用。
    的頭像 發表于 03-21 14:42 ?4725次閱讀

    Xilinx軟件命令行工具:XSCT開發和調試

    了解如何使用XSCT,Xilinx軟件命令行工具進行開發和調試。 該視頻演示了XSCT如何充當Xilinx SDK的命令行控制臺。
    的頭像 發表于 11-21 06:02 ?1.4w次閱讀

    Xilinx軟件命令行工具進行開發和調試

    了解如何使用XSCT,Xilinx軟件命令行工具進行開發和調試。 該視頻演示了XSCT如何充當Xilinx SDK的命令行控制臺。
    的頭像 發表于 11-22 06:53 ?6645次閱讀

    Git常見的誤區和命令行工具等綜述

    Git常見的誤區和命令行工具等綜述
    發表于 08-31 09:51 ?0次下載

    Golang基于flag庫實現命令行工具

    Golang 標準庫中的 flag 庫提供了解析命令行選項的能力,我們可以基于此來開發命令行工具
    的頭像 發表于 10-28 09:26 ?1269次閱讀

    新的開源命令行工具west

    電子發燒友網站提供《新的開源命令行工具west.zip》資料免費下載
    發表于 11-11 09:25 ?0次下載
    新的開源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    用于解析和操作URL的命令行工具

    curl 作者 Daniel 宣布推出新的開源項目:trurl,這是一款用于解析和操作 URL 的命令行工具,主要是面向 shell 腳本作者提供。Daniel 稱項目名字中的 'tr' 代表 transla
    的頭像 發表于 04-11 10:02 ?1108次閱讀

    介紹Go里面經常使用到的命令行工具

    優秀的工具配合熟練的使用,往往可以讓開發效率大幅度提升,本小節介紹 Go 里面經常使用到的命令行工具
    的頭像 發表于 05-22 16:58 ?1262次閱讀
    介紹Go里面經常使用到的<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>

    PetaLinux工具文檔:命令行參考指南

    電子發燒友網站提供《PetaLinux工具文檔:命令行參考指南.pdf》資料免費下載
    發表于 09-15 14:52 ?0次下載
    PetaLinux<b class='flag-5'>工具</b>文檔:<b class='flag-5'>命令行</b>參考指南

    HarmonyOS開發:【基于命令行(安裝庫和工具集)】

    使用命令行進行設備開發時,可以通過以下步驟安裝編譯OpenHarmony需要的庫和工具
    的頭像 發表于 04-25 21:03 ?376次閱讀
    HarmonyOS開發:【基于<b class='flag-5'>命令行</b>(安裝庫和<b class='flag-5'>工具</b>集)】