使用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命令

ifconfig命令

(2)ip命令

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

(3)route命令

route命令

2.即时修改

(1)ifconfig命令

ifconfig命令

(2)ip命令

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!”强制退出。
linux vi/vim

更多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
如下图所示:
shell01执行

通过cat命令可看出,interfaces文件已被修改,即ip地址、子网掩码、网关、DNS已被永久修改成新的。
接着通过ifconfig和ip route命令可确认,当前ip地址、子网掩码、网关、DNS也已被修改成新的。 当前网络参数

五、使用node-red调用脚本

在node-red中使用exec节点可实现对脚本的调用。

1.exec节点

调用一个系统命令,并提供3个输出:stdout,stderr和返回码。 默认情况下,使用调用命令的exec()在等待完成时阻塞,然后一次返回完整的结果以及任何错误。

exec节点
exec节点

2.在node-red中创建流

创建流
编辑exec节点: 编辑exec节点
注意事项:
1.应在linux系统下执行node-red,否则在本机环境下无法调用sh脚本;
2.inject节点应设置为注入空字符,否则注入时间戳将无法调用sh脚本。

版权声明:本文为qq_39437900原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39437900/article/details/107692751

智能推荐

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包、多...