Linux nmcli控制NetworkManager的命令行工具

2023-11-13

RHEL7 与 CentOS 7 以上的版本中默认的网络服务由 NetworkManager 提供(简称NM),这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。NetworkManager 可以用于以下类型的连接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移动3G)以及 IP-over-InfiniBand。 针对与这些网络类型,NetworkManager 可以配置他们的网络别名,IP 地址,静态路由,DNS,VPN连接以及很多其它的特殊参数。可以用命令行工具 nmcli 来控制 NetworkManager。nmcli的功能要比 ifconfig 强大、复杂的多。
nmcli是命令行的NetworkManager工具,自动把配置写到/etc/sysconfig/network-scripts/目录下面。RHEL7 与 CentOS 7之前的网络管理是通过 ifcfg 文件配置管理接口(device),而现在是通过NetworkManager服务管理连接(connection)。一个接口(device)可以有多个连接(connection),但是同时只允许一个连接(connection)处于激活(active)状态。但有一个问题,重启服务器后默认激活那个连接,我没查到相关的资料,如果是服务器建议一个网口对于一个连接。
简单理解就是,一个连接就是(connection)就是/etc/sysconfig/network-scripts/目录下的一个配置文件,接口(device)是物理设备,一个物理设置可以拥有多个配置文件,但只能有一个配置文件属于使用(active)状态;配置文件的生成与使用状态均由NetworkManager控制。当然,依旧支持ifcfg文件配置管理网络,但不推荐。
典型用途包括:
Scripts: 通过nmcli利用NetworkManager,而不是手动管理网络连接。nmcli支持更适合脚本处理的简洁输出格式。请注意,NetworkManager还可以执行称为“调度程序脚本”的脚本来响应网络事件。
Servers, headless machines, and terminals: nmcli可用于在没有GUI的情况下控制NetworkManager,包括创建、编辑、启动和停止网络连接以及查看网络状态。

NetworkManager服务

使用 nmcli 时,NetworkManager 必须保持开启。
NetworkManager 的相关命令:

systemctl status NetworkManager			查看运行状态
ystemctl start NetworkManager			启动
ystemctl restart NetworkManager			重启
systemctl stop NetworkManager			关闭
systemctl is-enabled NetworkManager		查看是否开机启动
systemctl enable NetworkManager			开机启动
systemctl disable NetworkManager		禁止开机启动

注意:NetworkManager 中开头的 N 和中间的 M 必须大写。

nmcli使用方法

man手册
网络管理器参考手册
nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全,也可在命令最后通过-h、–help、help查看帮助。在nmcli中有2个命令最为常用:
nmcli语法:

nmcli [ OPTIONS ] OBJECT { COMMAND | help }
nmcli [OPTIONS...] { help | general | networking | radio | connection | device | agent | monitor } [COMMAND] [ARGUMENTS...]

OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,还有其他的选项在里暂时不介绍,这里需要简单区分一下connection和device。

1、nmcli connection

连接,偏重于逻辑设置,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c
多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection,这样可以方便的切换网络配置,比如笔记本电脑移动办公,到不同的环境同一个网卡可以切换到不同的网络配置,配置好以后不需要每次都从新配置。

2、nmcli device

设备,是网络设备的接口,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d
在NM里,有2个维度:连接(connection)和设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即 nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即 nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过 nmcli c up切换连接。

3、connection有2种状态:

▷ 活跃(带颜色字体):表示当前该connection生效
▷ 非活跃(正常字体):表示当前该connection不生效

4、device有4种常见状态:

▷ connected:已被NM纳管,并且当前有活跃的connection
▷ disconnected:已被NM纳管,但是当前没有活跃的connection
▷ unmanaged:未被NM纳管
▷ unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ethX down)

nmcli connection说明

[root@master ~]# nmcli c show						显示所有活动链接
名称    UUID                                  类型            设备   
ens33   51a4ba6c-0635-400b-a1c6-f9e87d55c303  802-3-ethernet  ens33        # 这是当前激活的连接带颜色字体,只是文章里体现不出来
virbr0  0d2e6f20-0044-49f9-80ec-cbe19c31df42  bridge          virbr0 
10.97.17.90      93e8cf06-bd0b-4b69-b802-f3c8c602e000    ethernet     # “--”表示当前没有激活的连接

每一行是一个连接,只是只有一个是激活状态
第一列是connection名字(连接名称)简称con-name,简称con-name(注意con-name不是网卡名)
第二列是connection的UUID
第三列是connection的网络类型
最后一列才是网卡名(标准说法叫device名),可通过nmcil d查看device
对connection做操作时需要指定标识,标识可以是con-name、UUID、如果存在ifcfg文件则也可以用ifcfg的完整路径,即/etc/sysconfig/network-scripts/ifcfg-ethX,如下示例:

nmcli c show ethX
nmcli c show cae3f1ef-e79a-46c3-8e0c-946b91a65e11
nmcli c show /etc/sysconfig/network-scripts/ifcfg-ethX

1、nmcli connection名字(连接名称)
同时对应ifcfg的文件名以及内容中的NAME=,该参数表示连接(connection)的名字,无需和网卡名相同,可以为一个设备(device)创建多个连接,但同一时刻只能有一个连接生效。当有多个连接时候,可以通过nmcli c delete删除当前连接,就会自动选择同一个设备的其他连接来顶替生效。可以通过nmcli c up来将指定连接切换生效。
注意:通过nmcli c modify修改连接名称,只会对应修改ifcfg文件中的NAME,而不会更改ifcfg文件名。
2、nmcli c的ipv4.method
对应ifcfg文件内容的BOOTPROTO,ipv4.method默认为auto,对应为BOOTPROTO=dhcp,这种时候如果指定ip,就可能导致网卡同时有dhcp分配的ip和静态ip。设置为manual表示BOOTPROTO=none,即只有静态ip。

nmcli device说明

[root@master ~]# nmcli d status               #查看设备接口简略信息
设备        类型      状态    CONNECTION 
virbr0      bridge    连接的  virbr0     
ens33       ethernet  连接的  ens33      
lo          loopback  未管理  --         
virbr0-nic  tun       未管理  --  

每一行表示一个网络设备的接口。
第一列表示设备接口的名称,第二列表示设备接口的类型,第三列表示设备接口状态,最后一列表示connection的名字,“–”表示设备为使用!

1、nmcli d connect ethX
由NM对指定网卡进行管理,同时刷新该网卡对应的活跃connection(如果之前有修改过connection配置);如果有connection但是都处于非活跃状态,则自动选择一个connection并将其活跃;如果没有connection,则自动生成一个并将其活跃。
2、nmcli d disconnect ethX
让NM暂时不管理指定网卡,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。另外,如果手工将该网卡的connection全部删掉,该网卡状态也会自动变为disconnected。
3、nmcli d reapply ethX
专门用于刷新connection,前提是网卡的device处于connected状态,否则会报错。
4、nmcli d set ethX autoconnect yes|no managed yes|no
可以设置是否自动连接和是否自动管理,但经测试只能用于当前开机状态, 如果这2个参数都设置为no,然后重启系统,又会自动恢复成connected和managed yes的状态。所以该命令用途不大。注意事项:如果managed设置为no,那么nmcli c reload会读取配置文件,但是不会立即生效,接着如果执行nmcli c up ethX,就会立即生效,同时managed自动变为yes。
重启系统自动恢复成connected和managed yes的状态,这种逻辑并不实用也不够合理,牛人已将此问题提交给redhat,据回复,这么设计是因为目前没有一个有效的手段来证明“我是我”,比如当网卡重新拔插到其他插槽时候,网卡名有很大可能性会发生变化,因此无法确定关机前设置的是对应开机后的哪个网卡,目前暂无办法解决,笔者将持续跟进。

3种网络配置方法

在讲3种配置方法前,需要先明白ifcfg和NM connection的关联:虽然network.service被废弃了,但是redhat为了兼容传统的ifcfg,通过NM进行网络配置时候,会自动将connection同步到ifcfg配置文件中。也可以通过nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX的方式来让NM读取ifcfg配置文件到connection中。因此ifcfg和connection是一对一的关系,另外上面有提到,connection和device是多对一的关系。

  1. 手工配置ifcfg,通过NM来生效
  2. 通过NM自带工具配ip,比如nmcli
  3. 手工配置ifcfg,通过传统network.service来生效

建议:
推荐使用上述第1种网络配置方法(手工配置ifcfg,通过NM生效),因为这样既兼容了传统的ifcfg配置,又能熟悉nmcli。举例:
vi /etc/sysconfig/network-scripts/ifcfg-eth0

# 注:这些参数值不区分大小写,不区分单引号和双引号,甚至可以不用引号。
NAME=eth0
DEVICE=eth0					  # 网络接口名称
ONBOOT=yes
BOOTPROTO=none				  # 网卡获取ip地址方式
TYPE=Ethernet				  # 配置文件接口类型
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
HWADDR/MACADDR                # 只需设置其中一个,同时设置时不能相互冲突。MAC地址
PEERDNS:是否指定DNS			   # 如果使用DHCP协议,默认为yes。 静态配置就需要手动指定
    yes:如果DNS设置,修改/etc/resolv.conf中的DNS
    no:不修改/etc/resolv.conf中的DNS
DNS{1, 2}=					  # 当PEERDNS为yes时会被写入/etc/resolv.conf中。DNS可以设置多个,在DNS后面加数字依次排序
# 修改保存后立即生效,无需重启。被其坑过几次,建议一般设为no。
NM_CONTROLLED:是否由Network Manager控制该网络接口。
    yes:由Network Manager控制
    no:不由Network Manager控制
USERCTL:用户权限控制(yes:非root用户允许控制该网络接口  no:非root用户不运行控制该网络接口)
IPV6INIT:是否执行IPv6
IPV6ADDR:IPv6地址/前缀长度

nmcli c reload           # 重载所有ifcfg到connection(不会立即生效)
nmcli c up eth0          # 如果之前没有eth0的connection,则上一步reload后就已经自动生效了

这么做有2个好处:
按官方建议使用NM而不是network.service。当还不太熟悉nmcli命令时候,这样最稳妥!

Tips

  1. nmcli命令支持tab补全,但是需要yum install bash-completion
  2. 如果希望NM不要纳管网卡,只有一个办法最彻底最靠谱,就是自己写ifcfg,内容加上NM_CONTROLLED=no,这样该device的状态就会始终保持unmanaged(非托管的)。nmcli c up、nmcli c reload、nmcil c load都不会对其起任何作用。
  3. NM只能对link状态为up的网卡进行操作,如果手动ip link set ethX down,那么NM就无法对该网卡做任何操作(即使nmcli d connect也没有用)。
  4. 对于RHEL8,可以通过yum install network-scripts来安装传统的network.service,不过redhat说了,在下一个rhel的大版本里将彻底废除,因此不建议使用network.service。
  5. 手工创建新的ifcfg或者在ifcfg里修改ip等配置,NM不会自动读取,需要手工执行nmcli c reload或者nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX。这一点可能和其他系统的NM行为不太一样,但这种做法实则更适合服务器。
  6. 不手工配置ifcfg,使用默认的dhcp情况下,网卡的增减是不会自动生成ifcfg,此时nmcli c看到的con-name将类似’System ethX’或者’Wired connection 1’。
  7. NetworkManager支持3种获取dhcp的方式:dhclient、dhcpcd、internal,当/etc/NetworkManager/NetworkManager.conf配置文件中的[main]部分没配置dhcp=时候,默认使用internal(rhel7/centos7默认是dhclient)。internal是NM内部实现的dhcp客户端。
  8. 关于手动指定网关ip的方法,经过实测,/etc/sysconfig/network中的GATEWAY仅在3种情况下有效:NM_CONTROLLED=no或ipv4.method manual或从ipv4.method manual第一次转到ipv4.method auto时候。建议:当NM_CONTROLLED=no时,将网关写在/etc/sysconfig/network(GATEWAY);当使用NM时候,使用nmcli c命令配置网关(比如nmcli c modify ethX ipv4.gateway 192.168.1.1)。
  9. NM默认会从dhcp里获取dns信息,并修改/etc/resolv.conf,如果不想让NM管理/etc/resolv.conf,则只需在/etc/NetworkManager/NetworkManager.conf里的[main]里增加dns=none即可。
  10. 如果想让NM不要自动管理新网卡(比如不要给新网卡获取ip地址),则只需在/etc/NetworkManager/NetworkManager.conf里的[main]里增加no-auto-default=*即可,改完后通过systemctl restart NetworkManager或者重启系统来生效。除了手工在NetworkManager.conf里加配置,也可以yum install NetworkManager-config-server,这会生成/usr/lib/NetworkManager/conf.d/00-server.conf,建议使用前者方案,因为后者的ingore-carrier是不被推荐的参数。

Options

-a | --ask
使用此选项时,nmcli将停止并询问任何缺少的必需参数,因此不要将此选项用于脚本等非交互目的。例如,此选项控制在连接到网络时是否提示您输入密码。

-c | --colors { yes | no | auto }
此选项控制颜色输出(使用终端转义序列)。“是”启用颜色,“否”禁用颜色,“自动”仅在标准输出指向终端时产生颜色。默认值为自动。 所用的实际颜色按照terminal-colors.d(5)中的描述进行配置。有关nmcli支持的颜色名称列表,请参考颜色部分。 如果设置了环境变量NO_COLOR(设置为任意值),则使用“自动”模式禁用着色。显式启用颜色会覆盖环境变量。

--complete-args
nmcli将列出最后一个参数的可能完成方式,而不是执行所需的操作。这对于在shell中实现参数补全非常有用。 退出状态将指示成功或返回代码65,指示最后一个参数是文件名。 NetworkManager附带了对GNU Bash的命令完成支持。

-e | --escape { yes | no }
是否转义:和\字符。转义符是\。 如果省略默认值为yes。

-f | --fields { field1,field2... | all | common }
该选项用于指定应该打印哪些字段(列名)。对于特定的命令,有效的字段名称会有所不同。通过向- fields选项提供无效值来列出可用字段。all用于打印命令的所有有效字段值。common用于打印命令的公共字段值。 如果省略,默认为通用。

-g | --get-values { field1,field2... | all | common }
此选项用于打印特定字段的值。它基本上是模式表格式字段的快捷方式,是检索特定字段值的便捷方式。每行打印一个值,不带标题。 如果指定了一个部分而不是一个字段,将打印部分名称,后跟属于该部分的字段的冒号分隔值,所有这些都在同一行上。

-h | --help
打印帮助信息

-m | --mode { tabular | multiline }
在表格和多行输出之间切换:
tabular			输出是一个表格,其中每行描述一个条目。列定义了条目的特定属性。
multiline		每个条目包含多行,每个属性占一行。这些值以属性名为前缀。
如果省略,则大多数命令的默认值为表格。对于产生更多结构化信息的命令,这些信息不能在一行中显示,默认为multiline。目前,它们是:
nmcli connection show ID
nmcli device show

-p | --pretty
输出很漂亮。这导致nmcli生成易于阅读的输出,即值对齐、标题打印等。

-s | --show-secrets
使用此选项时,nmcli将显示可能出现在操作输出中的密码和机密。此选项还会影响回显用户作为输入键入的密码。

-t | --terse
输出简洁。这种模式是为计算机(脚本)处理而设计的,并且适合于计算机(脚本)处理。

-v | --version
显示nmcli版本。

-w | --wait seconds
此选项设置nmcli等待NetworkManager完成操作的超时时间。这对于可能需要较长时间才能完成的命令特别有用,例如连接激活。 指定值0指示nmcli不要等待,而是立即退出,状态为成功。默认值取决于执行的命令。

案例

[root@servera ~]# nmcli connection show 
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  6bc56692-0f3b-3bf9-941f-8bc9f5ff7941  ethernet  enp1s0 
[root@servera ~]# nmcli connection add type ethernet ifname enp1s0 con-name enp1sp
[root@servera ~]# nmcli con modify enp1sp ipv4.method manual ipv4.address 172.25.250.10/24 ipv4.gat 172.25.250.254 ipv4.dns 172.25.250.254 connection.autoconnect yes
[root@servera ~]# nmcli connection show 
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  6bc56692-0f3b-3bf9-941f-8bc9f5ff7941  ethernet  enp1s0 
enp1sp              c2d0b77e-dbbb-4bf4-8e5a-efb14899b16c  ethernet  --     
[root@servera ~]# nmcli con down Wired\ connection\ 1 
Connection 'Wired connection 1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@servera ~]# ifconfig enp1s0

Backer mountain would pour, by everybody will be run, only your most reliable.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux nmcli控制NetworkManager的命令行工具 的相关文章

  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 如何将一个文本文件拆分为多个 *.txt 文件?

    我有一个文本文件file txt 12 MB 包含 something1 something2 something3 something4 有没有办法分开file txt分成 12 个 txt 文件 比方说file2 txt file3 t
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 在ubuntu中打开spyder

    我想在ubuntu中打开spyder Python IDE 通常我会在 shell 中编写 spyder 它会打开spyder IDE 现在 当我在shell中编写spyder时 它只是换行 什么也没有发生 类似于按 enter 我如何找回
  • 在 Linux 中重新启动时,新创建的文件变为 0 kb(数据被覆盖为空)

    我遇到了一个奇怪的问题 这让我发疯 当前的任务是在 root 用户第一次登录时启动一组文件 并在同一用户第二次登录时启动另一组文件 我决定使用 profile 和 bashrc 文件 并在第一次登录期间发生的任务结束时重新加载 bashrc
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • 来自守护程序的错误响应:加入会话密钥环:创建会话密钥:超出磁盘配额

    我尝试在我的服务器上安装 docker 使用本教程 https docs docker com install linux docker ce ubuntu 我想远程运行 docker 镜像并使用 portainer Web 界面来管理一切
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • ALSA:snd_pcm_writei 调用时缓冲区不足

    当运行我最近从灰烬中带回来的旧程序时 我遇到了缓冲区不足的情况 该程序将原始声音文件完全加载到内存中 2100 字节长 525 帧 并准备 ALSA 进行输出 44 1khz 2 通道 有符号 16 位 if err snd pcm set
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h

随机推荐

  • 放弃node-sass,启用sass

    在下载一个新项目时运行 npm run install 发现报错 npm uninstall 异常 Error Could not find any Visual Studio installation to use 或是 You need
  • 滑动平均滤波

    滑动平均滤波是一种常用的数字信号处理技术 它可以有效地去除信号中的噪声 提高信号的质量 滑动平均滤波的原理是对信号的每一个采样点 取其周围的若干个点的平均值作为滤波后的值 这样 信号中的随机噪声会被平均掉 而信号中的有用信息会被保留 用C语
  • 人民日报:密码,让百姓生活更安全

    密码技术是保障网络与信息安全的核心技术和基础支撑 通过加密保护和安全认证两大核心功能 可以完整实现防假冒 防泄密 防篡改 抗抵赖等安全需求 在网络空间中扮演着 信使 卫士 和 基因 的重要角色 信息化 网络化 数字化高度发达的今天 密码技术
  • 【突发】解决remote: Support for password authentication was removed on August 13, 2021. Please use a perso

    今天 github突然宣布 无法通过用户名加密码进行上传代码和访问 git push remote Support for password authentication was removed on August 13 2021 Plea
  • 策略模式+注解,代替if-else

    策略模式 经常在网上看到一些名为 别再if else走天下了 教你干掉if else 等之类的文章 大部分都会讲到用策略模式去代替if else 策略模式实现的方式也大同小异 主要是定义统一行为 接口或抽象类 并实现不同策略下的处理逻辑 对
  • 判断exe是64位还是32位

    右击exe属性 查看兼容模式 如果有windwos vista之前的版本则为32位的 如下图 如果没有windwos vista之前的版本则为64位的 如下图 转载于 https www cnblogs com tiandsp p 9603
  • Dubbo基础学习

    目录 第一章 概念介绍 1 1 什么是RPC框架 1 2 什么是分布式系统 1 3 Dubbo概述 1 3 Dubbo基本架构 第二章 服务提供者 直连 2 1 目录结构和依赖 2 2 model层 2 3 service层 2 4 res
  • 复用推挽输出与推挽输出区别

    GPIO InitStructure GPIO Mode GPIO Mode AF PP 复用推挽输出 GPIO SetBits GPIOE GPIO Pin 5 如果LED1是上拉的话 这时候它被点亮了 GPIO Mode AF PP g
  • QT 调用执行 linux脚本的三种方法

    在linux系统下 Qt执行shell命令的方式有3种 1 QProcess execute ls 2 system ls 3 QProcess process new QProcess process gt start ls 注1 以上3
  • 2020电赛准备总结(四)

    现在是2020 10 6 距离电赛开始还有三天 最近在考虑要不要让自己提前紧张起来 第一次准备这样的比赛 实在是没有经验 还差一口气没顶上去的感觉 最近开始调整状态了 从开学9 10到现在也快一个月了 感觉自己写博客总是在诉苦 像个怨妇一样
  • UVA-1601 万圣节后的早晨 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 以三个点的当前位置作为状态 广度优先遍历 找到终点即为最短次数 注意 一次可以移动多个点 但是每个点只能移动一步 在同一次中 B可
  • oschina源码分析之侧滑菜单界面之可以拖动的ScrollView

    先上源码 package net oschina app widget import android annotation SuppressLint import android content Context import android
  • 云汉芯城下载封装导入AD

    1 首先需要先注册一个账号 没账号没法下载 2 这里以磁珠ILHB0805ER900V 为例 选择要下载的模型 3 打开AD 文件 gt 运行脚本 选择浏览 来自文件 找到下载的模型的位置 找到 PrjScr后缀的 双击打开 出现如下图片
  • TensorFlow图变量tf.Variable的用法解析,后面的name属性和前面的变量名有什么关系?如果不同,在调用上以谁为准?

    jjjj32481 后面的name属性和前面的变量名有什么关系 如果不同 在调用上以谁为准 UESTC C2 403回复 jjjj32481 name这个属性就是给变量取个名字 你可以用name这个属性函数查看一下 如果没有取名 那么输出就
  • 解决Port xxxx was already in use 端口被占用问题

    解决Port xxxx was already in use 端口被占用问题 通过快捷键Window R 键入cmd 进入命令行 1 输入如下命令查看端口被占用的进程 netstat ano findstr 8088 可以发现端口8088被
  • 程序员绩效总结_程序员吐槽,绩效工资与bug数量挂钩,网友:那就别敲代码

    近日 一个程序员提了一个问题 引起热议 该程序员表示 绩效跟bug数量挂钩合理吗 bug多就扣工资 连续几个月的话还辞退 对此 很多网友都认为完全不合理 如果是这样的话 那不敲代码岂不是就没有bug了 这完全有种为辞退找理由嘛 有句俗话说得
  • Linux系统中部署软件

    目录 1 Mysql 2 Redis 3 ZooKeeper 声明 致谢 1 Mysql 参考 CentOS7安装MySQL 补充 执行 rpm import https repo mysql com RPM GPG KEY mysql 2
  • node学习—validate数据库验证

    数据库验证 一 数据库验证 一 数据库验证 service studentService const Student require models Student const Op require sequelize const Class
  • STM32对接涂鸦wifi模块项目记录(智能插座完善版本)

    应项目需求 客户需要对接涂鸦平台 从了解平台到样品实际落地 还是挺方便的 做过的一个项目 人体感应智能插座项目 对接涂鸦云 硬件平台 STM32F103 WIFI模块 涂鸦WiFi 型号见文章说明 云平台 涂鸦云 更新项目原理图部分说明 更
  • Linux nmcli控制NetworkManager的命令行工具

    RHEL7 与 CentOS 7 以上的版本中默认的网络服务由 NetworkManager 提供 简称NM 这是动态控制及配置网络的守护进程 它用于保持当前网络设备及连接处于工作状态 同时也支持传统的 ifcfg 类型的配置文件 Netw