使用Debian系linux脚本修改interfaces文件实现永久修改ip地址
标签: 学习 linux shell debian 脚本语言 网络
使用Debian系linux脚本修改interfaces文件实现永久修改ip地址
一、功能简述
将修改网络参数的指令写入脚本,通过向脚本传参数的方式设置各种参数(IP、子网掩码、网关、DNS)。
二、实现方式
1.脚本通过执行ifconfig和ip命令的方式,实现对网络参数的即时修改;
2.脚本通过编辑interfaces文件(路径:/etc/network/interfaces)的方式,实现对网络参数的永久修改。
备注:此处仅适用于Debian系的网卡配置。Debian系的网卡配置跟Redhat系很不一样,Redhat是放在/etc/sysconfig/network-scripts目录下面的一大堆文件里面。Debian系的则是存在/etc/network/interfaces文件里。
三、修改网络参数(IP、子网掩码、网关、DNS)
1.查看网络状态
(1)ifconfig命令

(2)ip命令
ip route/ip route show/ip route list可显示网络接口信息

(3)route命令

2.即时修改
(1)ifconfig命令

(2)ip命令

3.永久修改
(1)interfaces文件
在Debian系的网卡中,interfaces文件一个基本的配置大概是下面这个样子:
#The loopback interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.200.1
netmask 255.255.255.0
gatway 192.168.200.254
dns-nameservers 8.8.8.8
auto eth1
iface eth1 inet static
address 18.0.139.55
netmask 255.255.255.0
gateway 18.0.138.254
(2)修改ip
第2行,第5行和第11行说明lo接口,eth0接口和eth1接口会在系统启动时被自动配置;
第3行将lo接口设置为一个本地回环(loopback)地址;
第6行和第11行指出eth0和eth1接口具有一个静态的(static)IP配置;
第7行-第10行分别设置eth0接口的ip、子网掩码、网关和DNS地址;
第12行-第15行分别设置eth1接口的ip、子网掩码、网关和DNS地址。
若要修改网络参数,修改上述对应数据即可。
(3)vi命令
格式:
vi 文件路径加文件名
示例:
编辑网卡配置文件interfaces,其路径为:/ect/network/interfaces
vi /etc/network/interfaces
三种模式:命令模式、输入模式、操作模式
命令模式:输入上述指令后便直接进入命令模式,此时无法对文件内容进行操作。无论处于哪种模式下,按下“ESC”键即可返回命令模式。
输入模式:在命令模式中按下“i”或“a”或“o”键即可进入输入模式,在输入模式下可对文件内容进行编辑。
操作模式:在命令模式中按下“:”键即可进入操作模式。常用命令为“:wq”保存并退出,“:q”直接退出,“:q!”强制退出。

更多vi命令细节问题及操作请访问:
vi/vim命令
四、制作脚本
1.创建脚本文件
事先可先创建存放脚本的文件夹:
mkdir /shell01
当前目录切换到shell01文件夹下:
cd /shell01/
用vi命令对sh文件进行创建与编辑:
vi ip_shell.sh
由于涉及到interfaces文件的编辑,需要对脚本赋予权限:
chmod 777 /shell01/ip_shell.sh
2.编写脚本文件
shell脚本如下:
#!/usr/bin/env bash
eth1=/etc/network/interfaces
ipa=$(grep 'address' $eth1|sed -n '2p'|awk '{print $2}')
maska=$(grep 'netmask' $eth1|sed -n '2p'|awk '{print $2}')
gwa=$(grep 'gateway' $eth1|sed -n '2p'|awk '{print $2}')
dnsa=$(grep 'dns' $eth1|sed -n '2p'|awk '{print $2}')
ipb=$1
maskb=$2
gwb=$3
dnsb=$4
sed -i '/iface eth1/,/address/s/'$ipa'/'$ipb'/g' $eth1
sed -i '/iface eth1/,/netmask/s/'$maska'/'$maskb'/g' $eth1
sed -i '/iface eth1/,/gateway/s/'$gwa'/'$gwb'/g' $eth1
sed -i '/iface eth1/,/dns-nameservers/s/'$dnsa'/'$dnsb'/g' $eth1
ifconfig eth1 $ipb netmask $maskb
ip route add default via $gwb dev eth1
以修改eth1接口的ip为例:
大致思路是将interfaces文件中‘address’字符串的那一行用grep提取出,用sed提出代表eth1的第二行,再用awk提出第二个字符串,即得到具体的ip地址;之后用sed指令定位到eth1接口的address那一行,用想要修改的新ip替换掉原来的旧ip,完成对ip的永久修改;最后用ifconfig命令完成对ip的即时修改。
其余子网掩码、网关、DNS同理。
3.执行脚本
输入:/shell01/ip_shell.sh 新ip 新子网 新网关 新DNS
如:/shell01/ip_shell.sh 18.0.139.55 255.255.255.0 18.0.139.254 8.8.8.8
如下图所示:

通过cat命令可看出,interfaces文件已被修改,即ip地址、子网掩码、网关、DNS已被永久修改成新的。
接着通过ifconfig和ip route命令可确认,当前ip地址、子网掩码、网关、DNS也已被修改成新的。 
五、使用node-red调用脚本
在node-red中使用exec节点可实现对脚本的调用。
1.exec节点
调用一个系统命令,并提供3个输出:stdout,stderr和返回码。 默认情况下,使用调用命令的exec()在等待完成时阻塞,然后一次返回完整的结果以及任何错误。


2.在node-red中创建流

编辑exec节点: 
注意事项:
1.应在linux系统下执行node-red,否则在本机环境下无法调用sh脚本;
2.inject节点应设置为注入空字符,否则注入时间戳将无法调用sh脚本。
智能推荐
linux之cenos7修改ip(临时和永久)
1,临时修改ip ifconfig 网卡名称 ip地址 – 直接修改网卡ip,重启失效 2,添加多个临时ip ifconfig 网卡名称:0 第一个IP地址 ( netmask子网掩码)-增加一个IP,子网掩码默认255.255.255.0 config 网卡名称:1 第二个IP地址 ( netmask子网掩码)-增加一个IP 添加多个临时ip 删除临时ip 3,永久修改ip(使用nm...
linux虚拟机修改ip地址
前言: 由于在搭建hadoop集群的时候,会布置主从(master/slave)节点,每次重新打开虚拟机时,ip地址也会相应的改变,因此要改变为静态ip,避免重复繁琐的修改host文件。 1)首先查看ip地址 使用ifconfig命令 如果没有安装ifconfig命令,也不用着急,可以使用系统自带的 ip addr命令: 2)进入 /etc/sysconfig/network-scripts目录下...
linux系统修改为静态IP地址
解决方案 0、查看当前网络使用哪块网卡 命令行执行命令,找到正在使用的网卡名称,本例中为:eno1 1、修改配置文件(编辑文件需要vi相关命令,请自行google) 执行命令打开配置文件 添加如下选项,具体指可以参照i...
linux下修改静态ip地址
在使用SecureCRTPortable远程连接linux服务器时发现linux的ip地址一直是动态改变的,使用起来及其不方便所以,我们需要配置静态ip地址方法步骤如下(网络连接模式是:NAT) 注意:更改配置需要是root权限 网络配置的配置文件的路径: /etc/sysconfig/network-scripts/ 一、列出所有的设备配置文件:我这里就是ifcfg-eno167777286这个...
Python 学习记录-list类方法补充 Day9
<1>clear() #清空列表 输出结果: [] 认识深浅拷贝方法前的知识点补充****************************** 数据类型在内存的指向情况如下几种: ***第一种情况:列表指向相同的内存地址 输出结果: [11, 22, 33] [11, 22, 33] li1与li2指向相同的内存地址!! 输出结果: [11, 22, 33, 44] [11, 22, ...
猜你喜欢
java压缩文件并加密,发送到邮箱
日常记录 目标,我们需要把文件进行压缩 并进行加密设置密码,并发送到指定的邮箱,这是需求 首先把工具类贴出来 我们需要导入一个jar包 winzipaes-1.0.1.jar 上传了一下,告诉已经存在了所以,有看到的去找下吧, 应该很好找的 用法在下面 下面介绍一下用法 直接调用方法即可,第一个参数是你的文件名称,第二个事压缩完后的文件名称,第三个是压缩加密的密...
使用@Slf4j的正确方法
环境说明 Windows 10 1803 IDEA 2018.2.EAP Maven 3.5.2 这是正文 POM文件 这里要吐槽一下,其实不想写这篇的,因为网上一搜有很多,但是,我真的被坑到了,很多篇教程都是复制,依赖不全,导致我总是运行不了。教程教程,就是给人学习的,你不能默认你的读者掌握了其他相关的东西。 好了,在pom中添加上面的所有依赖,很多教程里都只说添加lombok依赖就行了,其实不...
2020南京邮电大学Mooc—在线期末考试主观卷
为客观卷部分,自取。 2020南京邮电大学Mooc—在线期末考试客观卷 1 ( 20分 ) 请对序列进行快速排序,写出前5趟的排序过程,按照如下答题格式进行答题,答题时注意不要漏掉下划线,下划线标错扣分。 答题格式: 第1趟: 第2趟:____________________________ 第3趟:____________________________ 第4趟:__________...
入门图论、图论的一些基本概念及实战
图论的一些基本概念及实战 基本概念 主要思想 实战 例题1-无向图的广深优先遍历 例题2--有向图的深度优先遍历(城市地图) 例题3--最少转机 基本概念 图就是有N个顶点和M条边组成的集合。图分为有向图和无向图,如果给图的每条边规定一个方向,那么得到的图称为有向图,其他边也称为有向边。在有向图中,与一个点相关联的边有出边和入边之分,而与一个有向边关联的两个点也有始点和终点之分。边没有方向的图称为...
maven 保姆教程
什么是Maven? 如今我们构建一个项目需要用到很多第三方的类库,如写一个使用Spring的Web项目就需要引入大量的jar包。一个项目Jar包的数量之多往往让我们瞠目结舌,并且Jar包之间的关系错综复杂,一个Jar包往往又会引用其他Jar包,缺少任何一个Jar包都会导致项目编译失败。 以往开发项目时,程序员往往需要花较多的精力在引用Jar包搭建项目环境上,而这一项工作尤为艰难,少一个Jar包、多...
