Networking

等效於 NetworkManager 的“用作熱點”選項的終端命令

  • October 4, 2018

我正在製作一個 gui 應用程序,它將控制我的筆記型電腦,以使其充當 wifi 熱點。我可能會更改發行版,因此我想找到一個通常適用於所有發行版的解決方案。我目前正在 Fedora 17 上執行此操作。

使用 NetworkManager 的“用作熱點”按鈕非常適合創建臨時熱點: 在此處輸入圖像描述

我想用終端命令重新創建這個功能。

以下是我嘗試完成的兩種方法,但我還沒有找到解決方案。


方法1:iwconfig

使用來自網路的研究,我嘗試了以下命令:

# ifconfig wlan0 10.42.0.1 netmask 255.555.255.0 broadcast 10.42.0.255 up
# iwconfig wlan0 essid my-lappy mode ad-hoc key 0123456789
# iptables-restore < saved-hotspot-iptables
# echo 1 > /proc/sys/net/ipv4/ip_forward
# dhclient wlan0

我使用“用作熱點”功能設置的 iptablessaved-hotspot-iptables生成的文件在哪裡。iptables-save > saved-hotspot-iptables

方法 1 問題

設備可以看到 SSID 但無法連接。執行ip a顯示有關 wlan0 的以下資訊:

...
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT qlen 1000
...

存在通知NO-CARRIER,並且狀態是DORMANT而不是UP

執行ifconfig wlan0顯示如下:

...
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
...

請注意,RUNNING作為標誌之一缺少。


方法 2:nmcli

如果在系統上至少按下 NetworkManager 的“用作熱點”按鈕一次,/etc/sysconfig/network-scripts/ifcfg-Hotspot則創建,我可以使用以下命令啟動一個工作熱點:

# ifconfig wlan0 up
# nmcli con up id Hotspot
# iwconfig wlan0 essid my-lappy key 0123456789

方法 2 問題

如果使用者之前從未在 NetworkManager 上按“用作熱點”,nmcli con up id Hotspot則無法正常工作。我看過nm-connection-editor --create但找不到太多資訊。我也研究過手動創建/etc/sysconfig/network-scripts/ifcfg-Hotspot,但這種方法似乎並不優雅或無法擴展到其他發行版。

請參閱我對“創建無線接入點並與共享網際網路連接”的回答nmcli

我用 GNOME 網路管理器創建了一個熱點。問題是,我無法在 GUI 中配置 SSID 和密碼。如果您使用 Network-Manager GUI 創建熱點,它會創建文件/etc/NetworkManager/system-connections/Hotspot. 在該文件中,可以編輯 SSID 和密碼。

sudo vim /etc/NetworkManager/system-connections/Hotspot

該文件的內容如下所示:

[connection]
id=Hotspot
uuid=0bf627gd-8e34-48c6-865a-06f898b4y1hb
type=wifi
autoconnect=false
permissions=
secondaries=

[wifi]
hidden=false
mac-address=YOUR_WIFI_INTERFACE_MAC_ADDRESS
mac-address-blacklist=
mode=ap
seen-bssids=
ssid=SSID_NAME

[wifi-security]
group=ccmp;
key-mgmt=wpa-psk
pairwise=ccmp;
proto=rsn;
psk=YOUR_WIFI_AP_PASSWORD

[ipv4]
dns-search=
method=shared

[ipv6]
dns-search=
method=auto

我只根據我的需要更改了ssidpsk屬性。然後我重新啟動了我的電腦,因為命令:sudo systemctl restart NetworkManagerfor network restart 似乎無法正常工作,因為在 Network-Manager GUI 中我不再有無線網路設置,並且以下命令在重新啟動之前也沒有工作。重啟後可以使用nmcli命令啟動接入點。

nmcli con up Hotspot ifname YOUR_WIFI_INTERFACE

YOUR_WIFI_INTERFACE你可以用命令找出來iwconfig

有一個專用選項nmcli

nmcli device wifi hotspot ifname wlan0 ssid toto password toto

手冊中的更多資訊:

wifi hotspot [ifname ifname] [con-name name] [ssid SSID] [ band { a | bg } ] [channel channel] [password password] 

引用自:https://unix.stackexchange.com/questions/41385