使用Bash将IP地址从Linux上的Dynamic更改为静态

此处描述的BASH脚本可以通过较少的手动工作将Linux Systems的IP地址从动态转换为静态。

  • 在脸书上分享
  • 分享到Twitter
  • 分享LinkedIn
  • 分享Reddit
  • 通过电子邮件分享
  • 打印资源
网络接口连接
派克人 /盖蒂图像

将Linux系统的IP地址从动态更改为静态并不困难,但是需要一些小心和一组您可能很少使用的命令。这篇文章提供了一个BASH脚本,该脚本将通过该过程运行,收集所需的信息,然后发出进行更改所需的命令,同时向运行它的人提出尽可能少的要求。

脚本的大部分重点是确保使用正确的设置。例如,它从系统中收集了36个字符普遍唯一的标识符(UUID),因此您永远不必将其输入或复制并粘贴到位。

在问一两个问题之后,脚本运行了一系列NMCLI(网络管理器)如果要求,将更改IP地址并将地址设置为静态的命令。请注意,将如下所示的命令中的许多字段是从脚本中的早期命令得出的变量。

sudo nmcli连接修改$ uuidipv4.address$ ip/$ szsudo nmcli连接修改$ uuidipv4.gateway$路由器sudo nmcli连接修改$ uuidipv4$ uuidsudo nmcli连接$ uuid

如果请求新的IP地址,则脚本将检查所请求的地址的格式,并确保其与当前网络兼容。

在运行上面显示的命令之前,该脚本收集用于确保正确设置命令的变量,这是通过在当前设置上报告的命令来运行。每个命令的输出中收集了它们中显示的突出的UUID:

$ NMCLI连接显示名称UUID类型设备有线连接1EC33E575-8059-3A20-B7A5-58393DEB1783以太网ENP0S25

如下所示,命令将UUID保存在脚本中,以便可以在NMCLI前面显示的命令。

$ uuid =`nmcli连接show |尾-1 |awk‘{print $ 4}’`$ echo $ uuidEC33E575-8059-3A20-B7A5-58393DEB1783

下面的命令从一个ip a如下所示的命令。结果将是“ 192.168.0.4/24”,其中24(即24位)告诉我们,地址的前三个字节(192.168.0)代表网络。

$ subnet =`ip a |Grep“ Inet” |尾-1 |awk‘{print $ 2}’`$ echo $ subnet 192.168.0.11/24

从系统中获取几乎所有所需的信息,而不是要求用户提供该过程,从而使过程变得更加容易,可能更可靠。

该脚本还为您提供了更改当前IP地址的选项,如果您不喜欢它。虽然这将使您在脚本结束时与系统断开连接,但您可以立即使用新的IP地址登录。

请注意脚本使用Sudo对于最终命令,因为这些命令将更改系统设置。

这是我称之为“ set_static_ip”的脚本:

#!/bin/bash#获取子网子网=`ip a |Grep“ Inet” |尾-1 |awk‘{print $ 2}’`#获取路由器/网关路由器=`ip路由show |头-1 |awk‘{print $ 3}’`#获取地址网络部分的大小bytes sz =`echo $ subnet |awk -f /’{print $ 2}’`bytes =`expr $ sz / 8` prefix =`echo $ subnet |切割-d。-f1- $ bytes`#e.g.,192.168.0#获取要设置的IP地址
ip =`主机名-i |awk‘{print $ 1}’`#当前IP
echo -n“保持IP地址? - $ ip [yn]>“
如果[$ ans ==“ n”]阅读ANS;然后echo -n“输入新的IP地址:“读取IP#检查是否正确格式化了[[!$ ip =〜 ^[0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} $]];然后回声无效IP FI#检查是否指定的IP适用于本地网络,如果[[!$ ip =〜 ^$ prefix]];然后回声“错误:指定的IP不适用于本地网络”出口fi#检查是否正确格式化了指定的IP,如果[[!$ ip =〜 ^[0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} \。[0-9] {1,3} $]];然后回声无效IP fi#获取uuid uuid =`nmcli连接show |尾-1 |awk‘{print $ 4}’`#uuid =`nmcli连接show | head -2 | tail -1 | awk ‘{print $3}’` # Mint # run commands to set up the permanent IP address sudo nmcli connection modify $UUID IPv4.address $IP/$sz sudo nmcli connection modify $UUID IPv4.gateway $router sudo nmcli connection modify $UUID IPv4.method manual sudo nmcli connection up $UUID

该脚本在Fedora 35和Linux Mint上进行了测试。请注意,在薄荷上获取UUID的命令是不同的,因为“ NMCLI连接显示”命令的输出不同。薄荷的命令包含在脚本中,但对简单的开关进行了评论。

与脚本的互动看起来像这样:

美元

运行脚本后,我跑了寻找命令要查找最近更新的文件,并找到了该文件,其中包括上面显示的THRID命令中指定的“手册”(即静态)设置。

$ sudo cat“/etc/networkmanager/system-connections/niw Connection 1.NMConnection” [连接] ID =有线连接1 UUID = EC33E575-8059-3A20-B75-5839393DEB1783类型= enp0s25 permissions = timestamp = 1653746936 [以太网] mac-address-black-lacklist = [ipv4] address1 = 192.168.0.11/24,192.168.0.0.1 dns-search = method = method = method = method = =手动的[ipv6] addr-gen-mode =稳定私人dns-search = method = auto [proxy]

要仅查找最近创建或更新的文件,您可以使用这样的命令,该命令查找最近14.4分钟内已更改的文件:

$ sudo查找。-mtime -.01 -print

如果这还不清楚,-mtime设置为1时的变量表示“ 1天”。由于一天的长度为1440分钟,.1意味着144分钟,而.01表示14.4分钟。

包起来

除非不是,否则动态地址是很棒的。不是当问题是一个您必须经常连接到一个系统而不是只有一个系统的系统时。当您需要不变的IP地址时,知道如何将IP地址从动态地址更改为静态可能会很重要。

加入网络世界社区足球竞猜app软件FacebookLinkedIn评论最重要的主题。
有关的:

版权所有©2022 IDG Com足球竞彩网下载munications,Inc。