【Ubuntu】Ubuntu网络管理
Ubuntu 网络管理
ubuntu/debian 中的网络管理
- NetworkManager,使用nmcli查询与操作网络配置
/run/NetworkManager/no-stub-resolv.conf
对应命令行例子:nmcli device show
- systemd-networkd,使用netplan的yaml文件来配置网络
/usr/lib/systemd/systemd-networkd
- systemd-resolved,dns的配置文件
16.04|20.04 /lib/systemd/systemd-resolved
24.04 /usr/lib/systemd/systemd-resolved
/run/systemd/resolve/resolv.conf
一般使用命令行systemd-resolve --status
低版本中没有(16.04)
NetworkManager
提供libnm库读取与操作网络配置,对应命令是nmcli
使用c的例子来展示网络信息, 能获取到每个网口DHCP得到的DNS.
#include <NetworkManager.h>
#include <glib.h>
#include <stdio.h>static char *
ip4_address_as_string (guint32 ip)
{char *ip_string;struct in_addr tmp_addr;tmp_addr.s_addr = ip;ip_string = g_malloc0 (INET_ADDRSTRLEN + 1);if (!inet_ntop (AF_INET, &tmp_addr, ip_string, INET_ADDRSTRLEN))strcpy (ip_string, "(none)");return ip_string;
}int main() {GError *error = NULL;NMClient *client = nm_client_new(NULL, &error);if (error) {g_print("Failed to create NetworkManager client: %s\n", error->message);g_error_free(error);return -1;}// 获取所有活跃的连接GPtrArray *active_connections = nm_client_get_active_connections(client);if (active_connections) {for (guint i = 0; i < active_connections->len; i++) {NMActiveConnection *active_connection = g_ptr_array_index(active_connections, i);NMConnection *connection = nm_active_connection_get_connection(active_connection);if (connection) {const char *connection_id = nm_connection_get_id(connection);g_print("Active Connection ID: %s\n", connection_id);}// 获取与该活跃连接相关的设备GPtrArray *devices = nm_active_connection_get_devices(active_connection);if (devices) {for (guint j = 0; j < devices->len; j++) {NMDevice *device = g_ptr_array_index(devices, j);const char *device_name = nm_device_get_iface(device);g_print("Device: %s\n", device_name);// 获取设备的 IPv4 配置NMIPConfig *ip4_config = nm_device_get_ip4_config(device);if (ip4_config) {if (ip4_config) {GPtrArray *addresses = nm_ip_config_get_addresses(ip4_config);for (guint i = 0; i < addresses->len; i++) {NMIPAddress *addr =(NMIPAddress*) g_ptr_array_index(addresses, i);const char *str = nm_ip_address_get_address(addr);g_print(" IPv4 Address: %s\n", str);guint32 hostmask, network, bcast, netmask;guint32 addr_bin;nm_ip_address_get_address_binary (addr, &addr_bin);netmask = nm_utils_ip4_prefix_to_netmask (nm_ip_address_get_prefix (addr));network = addr_bin & netmask;hostmask = ~netmask;bcast = network | hostmask;str = ip4_address_as_string (bcast);g_print("Broadcast Address:%s\n", str);g_free (str);str = ip4_address_as_string (netmask);g_print("Subnet Mask:%s\n", str);g_free (str);}const char *gateway = nm_ip_config_get_gateway(ip4_config);g_print("Gateway:%s\n", gateway);const char * const *dns = nm_ip_config_get_nameservers (ip4_config);for (i = 0; dns && dns[i] && i < 3; i++) {g_print("DNS[%d]:%s\n", i, dns[i]);}}}}}}} else {g_print("No active connections found.\n");}g_object_unref(client);return 0;
}
netplan
使用systemd-networkd做服务,配置文件在/etc/netplan中
network:version: 2# 如果renderer是NetworkManager则netplan不会使用systemd-networkd服务也不会启动.renderer: networkdethernets:enp3s0:dhcp4: yesaddresses: []dhcp-identifier: macoptional: yes
相关文章:
【Ubuntu】Ubuntu网络管理
Ubuntu 网络管理 ubuntu/debian 中的网络管理 NetworkManager,使用nmcli查询与操作网络配置 /run/NetworkManager/no-stub-resolv.conf 对应命令行例子: nmcli device showsystemd-networkd,使用netplan的yaml文件来配置网络 /usr/lib/systemd/systemd-networkdsystemd-resol…...
GitHub 趋势日报 (2025年05月27日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1Fosowl/agenticSeek完全本地的马努斯AI。没有API,没有200美元的每…...
VR视角下,浙西南革命的热血重生
VR 浙西南革命项目依托先进的 VR 技术,为浙西南革命历史的展示开辟了一条全新的道路 ,打破了时间与空间的限制,使革命历史变得触手可及。 (一)沉浸式体验革命场景 借助 VR 技术,在 VR 浙西南革命的展示…...

深入解析Kafka JVM堆内存:优化策略与监控实践
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

【高级终端Termux】在安卓手机/平板上使用Termux 搭建 Debian 环境并运行 PC 级 Linux 应用教程(含安装WPS,VS Code)
Termux 搭建 Debian 环境并运行 PC 级 Linux 应用教程 一、前言 1. 背景 众所周知,最新搭载澎湃OS和鸿蒙OS的平板都内置了PC级WPS,办公效率直接拉满(板子终于从“泡面盖”升级为“生产力”了)。但问题来了:如果不是这…...
基于BERT-Prompt的领域句子向量训练方法
基于BERT-Prompt的领域句子向量训练方法 一、核心原理:基于BERT-Prompt的领域句子向量训练方法 论文提出一种结合提示学习(Prompt Learning)和BERT的领域句子向量训练方法,旨在解决装备保障领域文本的语义表示问题。核心原理如下: 以下通过具体例子解释传统词向量方法和…...

高频面试--redis
Reids 1. 常见的数据结构(string, list, hash, set, zset) 答法模板: Redis 提供五种核心数据结构: String:最基本的类型,支持整数、自增、自减、位操作。 List:双端链表,支持消息…...

CRMEB 单商户Java版 v2.3公测版发布,欢迎体验!
当商城管理后台一成不变时,你是否也有过换换风格的想法? 当商城流量激增时,你是否也希望随时观察服务器负载状况,确保系统稳定运行? CRMEB单商户Java版v2.3公测版发布,更新200管理后台页面、弹窗…...
(四) 本地YARN集群的部署
一、部署说明 Hadoop YARN分布式资源调度,会启动: ResourceManager进程作为管理节点NodeManager进程作为工作节点ProxyServer、JobHistoryServer这两个辅助节点 二、配置文件 在 $HADOOP_HOME/etc/hadoop 文件夹内,修改: 1.m…...

华为OD机试真题——求最多可以派出多少支队伍(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...

《软件工程》第 12 章 - 软件测试
软件测试是确保软件质量的关键环节,它通过执行程序来发现错误,验证软件是否满足需求。本章将依据目录,结合 Java 代码示例、可视化图表,深入讲解软件测试的概念、过程、方法及实践。 12.1 软件测试的概念 12.1.1 软件测试的任务 …...

消息队列-kafka为例
目录 消息队列应用场景和基础知识MQ常见的应用场景MQ消息队列的两种消息模式如何保证消息队列的高可用?如何保证消息不丢失?如何保证消息不被重复消费?如何保证消息消费的幂等性?重复消费的原因解决方案 如何保证消息被消费的顺序…...

学习STC51单片机20(芯片为STC89C52RCRC)
每日一言 生活不会一帆风顺,但你的勇敢能让风浪变成风景。 串口助手的界面就等于是pc端的页面设置的是pc端的波特率等等参数 程序里面的是单片机的波特率等等参数 串口助手是 PC 端软件 串口助手(如 STC-ISP)是运行在 PC 上的工具&#x…...

链路追踪神器zipkin安装详细教程教程
今天分享下zipkin的详细安装教程,具体代码demo可以参考我上篇文章:Spring Cloud Sleuth与Zipkin深度整合指南:微服务链路追踪实战-CSDN博客 一、Zipkin是什么? Zipkin是由Twitter开源的一款分布式追踪系统(现由OpenZ…...
RabbitMQ备份与恢复技术详解:策略、工具与最佳实践
RabbitMQ作为广泛使用的消息中间件,其高可用性和数据持久化能力使其成为分布式系统的核心组件。然而,硬件故障、人为误操作或灾难性事件仍可能导致数据丢失或服务中断。因此,建立可靠的备份与恢复机制是运维工作的关键环节。本文基于RabbitMQ…...

bug: uniCloud 查询数组字段失败
问题根源:使用了支付宝云 官方说:2024年11月之后创建的新的支付宝云空间,数组字段查询强制必须设置 array 类型的索引 布尔类型的查询,强制必须设置 bool 类型的索引。 方案一:找到云服务空间-》云数据库-》对应的表-…...
Php JIT 使用详解
简介 PHP 8 引入的 JIT(Just-In-Time 编译器) 是该版本的一个重要性能特性,首次让 PHP 有了运行时即时编译的能力,从解释型语言迈向了“编译执行”的方向。 什么是 JIT? JIT 是 即时编译(Just-In-Time c…...

视觉分析开发范例:Puppeteer截图+计算机视觉动态定位
一、选型背景:传统爬虫已无力应对的视觉挑战 在现代互联网环境中,尤其是小红书、抖音、B站等视觉驱动型平台,传统基于 HTML 的爬虫已经难以满足精准数据采集需求: 内容加载由 JS 动态触发,难以直接解析 HTML…...

Linux 基础开发工具的使用
目录 前言 一:下载工具yum 二:文本编辑器vim 1. 命令模式 2. 插入模式 3. 底行模式 三:gcc和g 基本使用格式 常用选项及作用 编译过程示例 四、Linux 项目自动化构建工具 ——make/Makefile 1. make 与 Makefile 的关系 2. Make…...
ElasticSearch查询指定时间内出现的次数/2秒内出现的次数
查询指定时间内出现的次数 POST process-log/_search {"size": 0,"query": {"bool": {"filter": [{"range": {"requestTime": {"from": 1722470400000,"to": 1722556800000}}}]}},"agg…...

华为云Flexus+DeepSeek征文 | Dify-LLM平台一键部署教程及问题解决指南
作者简介 我是摘星,一名专注于云计算和AI技术的开发者。本次通过华为云MaaS平台体验DeepSeek系列模型,将实际使用经验分享给大家,希望能帮助开发者快速掌握华为云AI服务的核心能力。 目录 1. 前言 2. 准备工作 2.1 注册华为云账号 2.2 确…...
STP协议:如何消除网络环路风暴
生成树协议(STP,Spanning Tree Protocol)的主要功能: 消除网络环路导致的广播风暴问题(环路会引发MAC地址表不稳定)防止网络中的主机接收重复数据帧 STP工作原理: 选举根桥(Root …...

哈工大计算机系统2025大作业——Hello的程序人生
计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算学部 学 号 2023113072 班 级 23L0513 学 生 董国帅 指 导 教 师 史先俊 计算机科学与…...
物联网常用协议Modbus、CAN、BACnet介绍
一、Modbus Modbus 作为工业通信领域的基石,是一款被广泛应用的工业通信协议,主要用于实现可编程逻辑控制器(PLC)等工业电子设备之间的连接。1979 年,Modicon 公司(现施耐德电气的一部分)开发了这一协议,旨在简化工厂内设备间的通信流程。经过多年发展,Modbus 衍生出…...

Vue中van-stepper与input值不同步问题及解决方案
一、问题描述 在使用Vant UI的van-stepper步进器组件与原生input输入框绑定同一响应式数据时,出现以下现象: 通过步进器修改值后,页面直接输出{{ count }}和watch监听器均能获取最新值但input输入框显示的数值未同步更新,仍为旧…...

react基础技术栈
react基础技术栈 react项目构建react的事件绑定React组件的响应式数据条件渲染和列表循环表单绑定 Props和组件间传值,插槽react中的样式操作 生命周期ref 和 context函数组件和hook高阶组件React性能问题React-route的三个版本react-router使用步骤react-router提供…...

Three.js搭建小米SU7三维汽车实战(4)场景搭建
场地搭建 javascript // 导入threejs import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/addons/controls/OrbitControls.js"; // 1. 创建场景 const scene new THREE.Scene(); // 2. 创建相机 const camera ne…...
redis五种数据结构底层实现
参考文档: redis5种数据结构底层实现...

Excel 统计某个字符串在指定区域出现的次数
【本文概要】 Excel 统计某个字符串在指定区域出现的次数: 1、Excel 统计一个单元格内的某字符串的出现次数 2、Excel 统计某一列所有单元格内的某字符串的出现次数 3、Excel 统计某一区域所有单元格内的某字符串的出现次数 1、Excel 统计一个单元格内的某字符串的出…...
【Kubernetes】ubuntu20.04通过kubeadm + Docker安装k8s
Kubernetes v1.24集群安装配置步骤总结 一、环境准备 (一)系统要求 运行兼容deb/rpm的Linux操作系统(如Ubuntu或CentOS)的计算机,1台或多台。每台机器内存2GB以上,内存不足会限制应用运行。控制平面节点…...