使用Debian系linux脚本修改interfaces文件实现永久修改ip地址

使用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脚本。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值