如何解决如何使用 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。