Command-Line

使用 nmcli 配置 gsm 連接

  • September 6, 2019

我有一個沒有 X 顯示器的系統,我想用它nmcli來配置我的蜂窩調製解調器以連接到某個 apn。我可以在 Ubuntu(使用 X)上很好地使用這個調製解調器,我現在想在命令行上實現同樣的效果。如何設置連接?

到目前為止,我得到了這個:

# nmcli dev status

** (process:2379): WARNING **: Could not initialize NMClient /org/freedesktop/NetworkManager: Permissions request failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.PolicyKit1 was not provided by any .service files
DEVICE     TYPE              STATE        
ttyUSB1    gsm               disconnected 
eth0       802-3-ethernet    connected 

聚會有點晚了,但我被困在了同樣的障礙上。既然我已經解決了,我想我會分享我的發現,因為關於該主題的所有其他文章都像泥巴一樣清晰。

雖然 NetworkManager 可以看到設備,但它不知道設備支持的任何連接。與 WiFi 不同,我們不能只進行掃描來列出可用連接。我們需要自己添加一個。

在創建連接之前,請確保 NetworkManager 不會阻止設備被管理。預設情況下,這發生在 Ubuntu 伺服器上,以防止 NetworkManager 接管現有的合法遺留連接(請參閱此處Ubuntu 開發人員的解釋)。

nmcli device您可以在顯示您的設備狀態時驗證該設備是否不受管理unmanaged,相反的是disconnected. 在這種情況下,請跳到下一段。

要讓 Ubuntu Server 上的 NetworkManager 處理連接,請將文件複製/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf到,然後對其進行編輯:通過將type 添加到例外列表來/etc/NetworkManager/conf.d/10-globally-managed-devices.conf修改以開頭的行:unmanaged-device``gsm

unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:gsm

升級 NetworkManager 時不要忘記檢查原始 /usr/lib 文件的更新。

創建連接

首先,我們使用(適當命名的 /s)edit命令創建一個您希望命名的新連接,例如:

sudo nmcli connection edit type gsm con-name "My GPRS Connection"

如果sudo您不想在嘗試保存連接時感到失望,請使用此選項。

當然,如果您不使用 GSM,您可以將 type 參數更改為 NetworkManager 支持的不同協議。

現在您將進入編輯模式。您需要的大部分設置都會自動為您填寫。print您可以使用以下命令查看所有目前設置 :

nmcli> print
===============================================================================
               Connection profile details (My GPRS Connection)
===============================================================================
connection.id:                          My GPRS Connection
connection.uuid:                        27b012ca-453f-482f-bc0e-c81bbab07310
connection.interface-name:              --
connection.type:                        gsm
connection.autoconnect:                 yes
connection.timestamp:                   0
connection.read-only:                   no
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
connection.gateway-ping-timeout:        0
-------------------------------------------------------------------------------
ipv4.method:                            auto
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.addresses:                         
ipv4.routes:                            
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
-------------------------------------------------------------------------------
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
-------------------------------------------------------------------------------
gsm.number:                             *99#
gsm.username:                           --
gsm.password:                           --
gsm.password-flags:                     0 (none)
gsm.apn:                                --
gsm.network-id:                         --
gsm.network-type:                       -1
gsm.allowed-bands:                      1 (any)
gsm.pin:                                --
gsm.pin-flags:                          0 (none)
gsm.home-only:                          no
-------------------------------------------------------------------------------

鍵入help以查看完整的命令列表。

您唯一可能需要編輯的是網路的 APN。這可以設置為set gsm.apn <APN>APN 類似於 的位置epc.t-mobile.comwholesalevzwinternet用於 verizon。

您還可以限制與特定介面的連接。不建議這樣做,尤其是對於設備名稱很容易更改的基於串列的連接。如果你想,你可以做set connection.interface-name ttyS4例如。

如果您以 root 身份執行,您現在可以保存連接

nmcli> save

就是這樣。如果您需要返回編輯連接,請使用nmcli c edit "My GPRS Connection",或直接編輯配置文件。在基於 Debian 的系統上,您會在 中找到它/etc/NetworkManager/system-connections/,在 Redhat 上,它會在/etc/sysconfig/network-scripts/. 這些文件似乎可以從一個系統轉移到另一個系統——UUID 基本上是隨機的。

連接到我們的新連接

現在你應該可以連接了

sudo nmcli device connect <interface name>

如果一切順利,NetworkManager 會自動選擇“我的 GPRS 連接”。如果不,

sudo nmcli connection up "My GPRS Connection" ifname <interface name>

這就是我現在失敗的地方。它在連接期間超時,但我認為我超出了信號範圍。希望它對你更好。

如果您需要更多資訊,請發表評論。

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