PPP网络接口名修改并按序列累加

本文介绍了如何修改PPP源码,以实现L2TP、PPTP等连接后生成的网络接口名如L2TP0、L2TP1或PPTP0、PPTP1,详细过程包括下载源码、编译、文件替换及配置文件修改。在Ubuntu和ARM开发板上已成功验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Index:191123-PPP网络接口名修改
关键词:网络接口名修改、L2TP、PPTP、PPPoE、PPP of name

1.前言

L2TP、PPTP等其他形式的VPN在连接成功后,会自动生成ppp0、ppp1的网络接口名,如何区分生成它们,以实现L2TP0、L2TP1或者PPTP0、PPTP1就成了主要的功能需求。ubuntu或者ARM开发板上均可实现,本作者已经在ubuntu和ARM开发板均成功试验并成功。

2.效果

在这里插入图片描述

3.实现

3.1下载源码

本作者已经重新修改了PPP源码,直接在网页下方[源码下载入口]处下载源码。图1

图1 源码资源

3.2编译

  • 针对ubuntu等其他linux系统编译方式如下:
 - root# cd ppp-2.4.7</
### Python 中 `ndarray` 的基本概念 `ndarray` 是 NumPy 库中的核心数据结构之一,用于表示多维数组。这种数组具有固定大小和单一的数据类型,这使得其操作速度非常快[^1]。 ```python import numpy as np # 创建一维数组 a = np.array([1, 2, 3]) print(a) # 创建二维数组 b = np.array([[1, 2], [3, 4]]) print(b) ``` ### 构建 `ndarray` 对象的方法 可以通过多种方式创建 `ndarray` 实例: - 使用列表或其他序列类型的对象来初始化; - 利用内置函数如 zeros() 或 ones() 来生成特定形状的全零/全一阵列; - 调用 arange(), linspace() 函数按指定范围或间隔产生数值向量; ```python c = np.zeros((3, 4)) # 形状为(3,4)的全0矩阵 d = np.ones((2, 3, 4), dtype=np.int16) # 整数类型三维全1张量 e = np.arange(10, 30, 5) # 类似range功能的一维数组 f = np.linspace(0, 2, 9) # 在区间[0,2]内均匀分布8个点形成的一维数组 g = np.random.rand(3, 2) # 随机浮点数构成的二维数组 h = np.eye(3) # 单位方阵 i = np.empty_like(c) # 和c有相同shape但是未初始化的内容 j = np.full((2, 2), 7) # 所有元素都是7的二维数组 k = np.fromfunction(lambda i,j: i+j, (3, 3)) l = np.loadtxt('data.txt') # 加载文件内容转换成ndarray m = np.genfromtxt('file.csv', delimiter=',') n = np.copy(k) # 复制现有数组 o = k.view(np.float32) # 改变视图而不改变底层数据 p = a.astype(float) # 数据类型转换 q = b.reshape(-1) # 更改维度布局 r = s.T # 矩阵转置 s = t.flatten() # 将高维展平为一维 t = u.ravel() # 展平时返回的是原数组的一个view而不是副本 u = v.squeeze() # 删除单维度条目 v = w.swapaxes(0, 1) # 交换轴的位置 w = x.resize((2, 3)) # 修改尺寸填充新空间(如果存在) x = y.repeat(2).reshape(y.shape[0]*2,y.shape[1]) # 沿某个方向重复扩展 y = z.compress(condition,axis=0)# 根据条件压缩掉某些行或列 z = aa.nonzero()[0][:5] # 获取前五个非零位置索引 aa = bb.argmax(axis=-1) # 返回最大值所在下标 bb = cc.min(initial=None) # 计算最小值 cc = dd.max(initial=None) # 寻找最大值 dd = ee.sum(axis=(0,), keepdims=True) # 总结统计信息 ee = ff.mean(dtype=float) # 平均值计算 ff = gg.std(ddof=0) # 方差估算 gg = hh.cumsum(axis=0) # 累加求和 hh = ii.prod(axis=0) # 各项相乘的结果 ii = jj.dot(jj.T) # 点积运算 jj = kk.clip(min=0,max=1) # 数组裁剪至给定边界之间 kk = ll.sort(kind='quicksort')# 排序算法应用 ll = mm.searchsorted(v=[1.,2.], side='left') # 插入排序后的index定位 mm = nn.partition(kth=[1,-1]) # 分区选取第K小/大元素 nn = oo.argsort() # 得到排序后各元素原本所在的indices oo = pp.take(indices=[0,1,4], axis=0) # 提取指定索引处的子集 pp = qq.put(mask=[True,False,True], values=[10,20]) # 更新满足mask条件的地方 qq = rr.choose(choices=[rr*2, rr+2]) # 根据choice参数决定如何变换当前元素 rr = ss.diagonal(offset=0) # 取得对角线上的元素组成的新vector ss = tt.trace(offset=0) # 主对角线上所有元素之和 tt = uu.var(ddof=0) # 计算样本方差 uu = vv.round(decimals=2) # 四舍五入保留指定位数的小数部分 vv = ww.conjugate() # 共轭复数处理 ww = xx.real # 抽取出实部成分 xx = yy.imag # 抽取出虚部成分 yy = zz.transpose(*axes_order) # 自定义排列顺序完成transpose动作 zz = aaa.split(indices_or_sections=2, axis=0) # 按照一定规则拆分原始matrix aaa = bbb.vsplit(split_indices) # 垂直切割multi-dimension array bbb = ccc.hsplit(split_indices) # 水平分割multi-dimension array ccc = ddd.dsplit(split_indices) # 深度上切分multi-dimension array ddd = eee.concatenate((eee, fff),axis=0) # 连接多个arrays成为更大的整体 fff = ggg.stack(arrays_list, axis=0) # 新增一个维度后再拼接起来 ggg = hhh.block(list_of_lists) # 给出嵌套list形式描述block matrix构建过程 hhh = iii.atleast_1d(iii) # 如果输入不是至少是一维则升维补足 iii = jjj.atleast_2d(jjj) # 至少两维化 jjj = kkk.atleast_3d(kkk) # 最低三维度展现形态 kkk = lll.broadcast_to(shape_tuple) # 广播机制下的扩张resize lll = mmm.expand_dims(mmm, axis=0) # 添加新的长度为1的轴 mmm = nnn.squeeze(nnn) # 移除size等于1的那些轴 nnn = ooo.asfortranarray(ooo) # C-order to Fortran order memory layout change ooo = ppp.asarray(ppp) # Convert input into an ndarray. ppp = qqq.asanyarray(qqq) # Similar but preserves subclasses of ndarrays. ``` ### 布尔型索引的应用实例 布尔型索引是一种强大的工具,它允许通过逻辑表达式筛选符合条件的元素[^2]。 ```python arr = np.array([[1, 2], [3, 4], [5, 6]]) bool_idx = arr > 2 filtered_arr = arr[bool_idx] print(filtered_arr) ``` 上述代码片段展示了如何利用布尔掩码选出大于2的所有元素,将其存储在一个新的一维数组中。 ### 查找匹配项及其索引 当需要找到两个或多于两个数组之间的共同元素时,可以借助 set operations 功能实现这一目标[^3]。 ```python set1 = np.array([1, 2, 3, 4, 5]) set2 = np.array([3, 4, 5, 6, 7]) common_elements = np.intersect1d(set1, set2) unique_set1 = np.setdiff1d(set1, common_elements) union_sets = np.union1d(set1, set2) print(f"Common elements are {common_elements}") print(f"Unique elements in first set are {unique_set1}") print(f"The union is {union_sets}") ``` 这段程序说明了怎样获取交集、差异以及联合等集合关系的操作方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值