bash - 如何使用 nmcli 按类型删除连接?

标签 bash connection gsm networkmanager nmcli

我想要一个 bash 脚本,可以使用 nmcli 删除所有 gsm 类型的网络管理器连接。

最好的方法是什么?

最佳答案

这实际上是一个比表面上看起来更棘手的问题,因为 NetworkManager 允许连接名称中包含空格。这使得以编程方式解析 nmcli connection show 的连接名称输出有点尴尬。我认为脚本编写的最佳选择是依赖 UUID,因为它似乎始终是由十六进制字符和破折号组成的 36 个字符组。这意味着我们可以用正则表达式一致地拉取它。例如,您可以获得 gsm 连接的 UUID 列表,其中包含以下内容:

$ nmcli connection show | grep gsm | grep -E -o '[0-9a-f\-]{36}'
cc823da6-d4e1-4757-a37a-aaaaaaaaa
etc

因此您可以获取 UUID,然后根据 UUID 进行删除:

GSM_UUIDS=$(nmcli connection show | grep gsm | grep -E -o '[0-9a-f\-]{36}')
while IFS= read -r UUID; do echo nmcli connection delete $UUID; done <<< "$GSM_UUIDS"

使用 echo 运行以确保获得预期的结果,然后可以将其删除,然后就可以正常工作了。我在本地运行了一些虚拟 GSM 连接,它似乎按照您希望的方式工作:

GSM_UUIDS=$(nmcli connection show | grep gsm | grep -E -o '[0-9a-f\-]{36}')
while IFS= read -r UUID; do nmcli connection delete $UUID; done <<< "$GSM_UUIDS" 
Connection 'gsm' (cd311376-d7ab-4891-ba73-e4e8a3fc6614) successfully deleted.
Connection 'gsm-1' (54171181-5c37-4224-baf5-9eb36458f773) successfully deleted.

关于bash - 如何使用 nmcli 按类型删除连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67125804/

相关文章:

mysql - 从文本文件读取 IP 地址到 IPTABLES

mysql - 如何将存储在注册表中的Mysql odbc连接字符串整理为纯文本

mysql - 如何将 localhost 更改为机器名称?

c# - 添加 GSM 功能以连接到 azure 移动服务

android - GSM RSSI 和 LTE RSSI 和 RSRP

带有 os.system() 的 Python 'source HOME/.bashrc'

linux - 如何通过 Linux 脚本创建封面样式文本文件?

regex - 文件名匹配和导出

connection - Couchbase - 节点之间的连接

arduino - 使用Arduino GSM库打开IComSat GSM板