使用bash更改Linux上从动态到静态IP地址

这里描述的bash脚本可以更改Linux系统的IP地址从动态到静态更少的手工工作。

  • 在Facebook上分享
  • 在Twitter上分享
  • 分享在LinkedIn
  • 在Reddit分享
  • 通过电子邮件分享
  • 印刷资源
网络接口连接
PikePicture /盖蒂图片社

改变一个Linux系统的IP地址从动态到静态并不困难,但需要一点关心和一组命令,你可能很少使用。这篇文章提供了一个bash脚本,该脚本将运行在这个过程中,收集所需信息,然后问题更改所需的命令在要求尽可能少的人运行它。

脚本的大部分小说以确保使用正确的设置。例如,它收集36-charater全局惟一标识符(UUID)系统,你永远不需要输入或复制并粘贴到的地方。

只问一两个问题后,脚本运行一系列的nmcli(网络管理)命令,将改变IP地址,如果要求和设置地址是静态的。注意到很多领域如下所示的命令,它将运行变量是来源于早期命令在脚本中。

sudo nmcli联系修改UUID美元IPv4.addressIP美元/深圳美元sudo nmcli联系修改UUID美元IPv4.gateway美元的路由器sudo nmcli联系修改UUID美元IPv4。方法人工sudo nmcli连接UUID美元sudo nmcli连接起来UUID美元

如果一个新的IP地址请求,脚本会检查地址的格式要求,确保它符合当前网络。

运行上面的命令之前,该脚本收集使用的变量,以确保命令设置correctly-largely通过运行命令,报告当前的设置。所示的著名的UUID他们每个人收集来自该命令的输出:

美元nmcli连接显示名称UUID类型设备有线连接1ec33e575 - 8059 - 3表达a20 b7a5 deb1783——58393以太网enp0s25

UUID是保存在脚本的命令如下所示,以便它可以使用的nmcli命令。

美元UUID = ' nmcli尾部连接显示| 1 | awk的{打印4美元}“回声UUID美元ec33e575 - 8059 - 3表达a20 b7a5 deb1783——58393

下面的命令把从一个子网规范ip的一个命令如下所示。结果将是类似“192.168.0.4/24”,24(即。,24 bits) tells us that the first three bytes of the address (192.168.0) represent the network.

子网美元= ' ip | grep尾巴“inet”| 1 | awk的{打印$ 2}“回声子网192.168.0.11/24美元

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

脚本也给你选择改变当前IP地址,如果你不喜欢它。而这将让你从系统断开连接脚本结束时,您可以立即重新登录使用新的IP地址。

注意,该脚本使用sudo最后因为这些命令将会改变系统设置命令。

这是脚本,我称之为“set_static_IP”:

# !/bin/bash # get subnet subnet=`ip a | grep “inet “ | tail -1 | awk ‘{print $2}’` # get router/gateway router=`ip route show | head -1 | awk ‘{print $3}’` # get size of network portion of address in bytes sz=`echo $subnet | awk -F / ‘{print $2}’` bytes=`expr $sz / 8` prefix=`echo $subnet | cut -d. -f1-$bytes` # e.g., 192.168.0 # get IP address to be set
IP = '主机名我| awk '{打印1美元}“#当前IP
echo - n”保持IP地址?- $ IP (yn) >”
阅读答如果(ans美元= =“n”);然后echo - n”进入新的IP地址:“读IP #检查指定的IP是否正确格式化的如果[[!$ IP = ~ ^ [0 - 9] {1,3} \。[0 - 9] {1,3} \。[0 - 9] {1,3} \。[0 - 9]{1,3}$]];然后回声无效IP fi #检查如果指定IP为本地网络工作如果[[!$ IP = ~ ^ $前缀]];然后回声“错误:指定IP不适用于本地网络”退出fi fi #检查指定的IP是否正确格式化的如果[[!$ IP = ~ ^ [0 - 9] {1,3} \。[0 - 9] {1,3} \。[0 - 9] {1,3} \。[0 - 9]{1,3}$]];然后回声无效IP fi #获取UUID UUID = '尾巴nmcli连接显示| 1 | awk的{打印4美元}“# UUID = nmcli连接显示1 | 2 | |头尾awk的{打印3美元}“#薄荷#运行命令sudo nmcli建立永久的IP地址连接修改美元UUID IPv4。地址$ IP /深圳sudo nmcli连接修改美元UUID IPv4。网关路由器sudo nmcli连接修改UUID IPv4美元。方法人工sudo nmcli连接美元UUID

脚本在Fedora 35和Linux Mint测试。注意,命令获取薄荷的UUID是不同,因为“nmcli连接显示”命令的输出是不同的。薄荷是包含在脚本的命令但是注释掉了一个简单的开关。

交互脚本将是这个样子的:

美元。/ set_static_IP保持IP地址? 192.168.0.18 (yn) > y (sudo)密码yourid:连接成功激活(d - bus活动路径:/org/freedesktop/NetworkManager/ActiveConnection/24)

运行脚本后,我跑找到命令寻找最近的更新文件,发现这一个包括“手册”(即。穿过命令中指定,静态)设置如上所示。

$ sudo猫" / etc /使/系统链接/有线连接1。nmconnection“(连接)id =有线连接1 uuid = ec33e575 - 8059 - 3 - a20 b7a5 - 58393以太网autoconnect-priority deb1783 type = = -999接口名称= =时间戳= 1653746936(以太网)enp0s25权限mac-address-blacklist = (ipv4) address1 = 192.168.0.11/24,192.168.0.1 dns搜索= =方法手册(ipv6) addr-gen-mode = stable-privacy dns搜索=方法=汽车(代理)

只找到最近创建或更新文件,您可以使用一个命令这样查找文件,改变了过去14.4分钟:

$ sudo找到。-mtime -。01安全性

这个还不清楚,-mtime变量设置为1时表示“一天”。自长1440分钟,每天1。将意味着144分钟,幅意味着14.4分钟。

总结

动态寻址是伟大的除非它不是。它不是当系统问题是一个你必须经常连接而不是一个只连接。知道如何改变从动态到静态IP地址可以是一个大问题,当你需要一个IP地址,不会改变。

加入网络社区有个足球雷竞技app脸谱网LinkedIn上面的评论主题思想。
相关:

版权©2022 IDG通信公司。Raybet2