Administrator
Published on 2023-11-15 / 26 Visits
0
0

Linux/Windows下利用命令行配置本机网络方法(包含Java实现)

Windows

Linux

说明

linux下根据各发行版的不同,使用的命令行工具也不同。

nmcli

说明

nmcli命令行工具,是NetworkManager的命令行接口,只有安装了才能使用。有些发行版自带。

命令

#查看当前网络连接信息
nmcli connection show

#修改网络配置(静态)
nmcli connection modify <connection-name> ipv4.method manual ipv4.addresses <new-ip>/<subnet-mask> ipv4.gateway <new-gateway> ipv4.dns <dns-server1>,<dns-server2>
#示例
nmcli connection modify enp2s0 ipv4.method manual ipv4.addresses 192.168.5.123/24 ipv4.gateway 192.168.5.1 ipv4.dns 8.8.8.8,114.114.114.114

#修改网络配置(动态)
nmcli connection modify <connection-name> ipv4.method auto
#下面的行需执行,不然配置文件还是有保留原有的静态IP信息,导致ip a可以看到两个ip,传空值代表删除该配置
nmcli connection modify <connection-name> ipv4.addresses "" ipv4.gateway "" ipv4.dns ""

#重新加载网络连接(只能执行该命令,修改的配置才能生效)
nmcli connection up <connection-name>
#示例
nmcli connection up enp2s0

配置文件路径

每个网卡的配置文件对应在此文件夹下:/etc/NetworkManager/system-connections/

修改配置文件实现功能

直接修改配置文件也是可以达到配置网络的功能,只不过在修改时要确保正常,不然网络会不可用。
在UOS系统,原来的网卡配置内容如不正确,系统会自动生成新的网卡配置。

  1. 直接用编辑工具,如vi编辑网卡配置,如
vi /etc/NetworkManager/system-connections/enp2s0.nmconnection
  1. 使用sed命令进行自动替换(静态)
#下面代码实现配置网络信息(比较繁琐)
#其中<配置文件路径>替换为具体要修改的配置文件,如/etc/NetworkManager/system-connections/enp2s0.nmconnection

#删除address
sed -i '/address1=/d' <配置文件路径>
#增加address
sed -i '/ipv4/a\address1=192.168.5.123/24,192.168.5.1' <配置文件路径>

#删除dns(包含dns和ignore-auto-dns属性)
sed -i '/dns=/d' <配置文件路径>
#增加dns
sed -i '/ipv4/a\dns=8.8.8.8;114.114.114.114' <配置文件路径>
#增加ignore-auto-dns,该属性为true代表使用自己配置的dns,为false代表自动,不存在该属性代表自动
sed -i '/ipv4/a\ignore-auto-dns=true' <配置文件路径>

#配置成静态
sed -i 's/method=.*/method=manual/g' <配置文件路径>

#ipv6由于上面修改,需要回正
sed -i '$d' <配置文件路径>
echo 'method=auto' >> <配置文件路径>
  1. 使用sed命令进行自动替换(动态)
#下面代码实现配置网络信息(比较繁琐)
#其中<配置文件路径>替换为具体要修改的配置文件,如/etc/NetworkManager/system-connections/enp2s0.nmconnection

#删除address
sed -i '/address1/d'  <配置文件路径>
#修改method
sed -i 's/method=.*/method=auto/g' <配置文件路径>

#删除dns(包含dns和ignore-auto-dns属性)
sed -i '/dns=/d' <配置文件路径>

Comment