上课作业有一个脚本,是批量添加ip别名,批量删除ip别名,脚本如下

[root@loadblance scripts]# cat ip.sh
#!/bin/bash
function up {for i in `seq 1 16`;doif [ $i -eq 10 ];thencontinuefiifconfig eth0:$i 10.0.2.$i  netmask 255.255.255.0 updone
}
function down {for i in `seq 1 16`;doif [ $i -eq 10 ];thencontinuefiifconfig eth0:$i downdone
}
case $1 inup)up#ifconfig eth0:0 down;;down)down;;
esac

脚本执行批量添加没有什么问题,但在执行批量删除时出现如下报错

[root@loadblance scripts]# bash ip.sh down
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address
SIOCSIFFLAGS: Cannot assign requested address

后来分析发现是在批量删除的for循环执行第一次循环 ifconfig eth0:1 down的时候,就把所有的ip别名给删除了,导致后面的循环都会报错。

但是为什么执行ifconfig eth0:1 down就会把所有的别名ip都给down掉了呢,后来查了一下,翻到了redhat的bugzilla里面有篇记录,大体翻译如下:

新添加的ip地址如果是和原有的ip的子网相同,那么新添加的ip都将成为原有ip的secondary ,原有的ip称为primary address。当primary被删除后,secondary都会被删除。而如果只删除某个secondary,不会影响其他的ip地址。查看这些信息,建议用ip addr命令。

再看看我们的环境(如下),由于新添加的eth0:1和eth0并不是同一个子网,所以新添加的eth0:1是一个新的primary address,其他的eth0:2-eth0:16是eth0:1的secondary,正因为如此,按照上面理论,当删除eth0:1时,其他ip别名都会自动被干掉。

[root@loadblance scripts]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000link/ether 00:0c:29:29:3f:fd brd ff:ff:ff:ff:ff:ffinet 192.168.1.9/24 brd 192.168.1.255 scope global eth0inet 10.0.2.1/24 brd 10.0.2.255 scope global eth0:1inet 10.0.2.2/24 brd 10.0.2.255 scope global secondary eth0:2inet 10.0.2.3/24 brd 10.0.2.255 scope global secondary eth0:3inet 10.0.2.4/24 brd 10.0.2.255 scope global secondary eth0:4inet 10.0.2.5/24 brd 10.0.2.255 scope global secondary eth0:5inet 10.0.2.6/24 brd 10.0.2.255 scope global secondary eth0:6inet 10.0.2.7/24 brd 10.0.2.255 scope global secondary eth0:7inet 10.0.2.8/24 brd 10.0.2.255 scope global secondary eth0:8inet 10.0.2.9/24 brd 10.0.2.255 scope global secondary eth0:9inet 10.0.2.11/24 brd 10.0.2.255 scope global secondary eth0:11inet 10.0.2.12/24 brd 10.0.2.255 scope global secondary eth0:12inet 10.0.2.13/24 brd 10.0.2.255 scope global secondary eth0:13inet 10.0.2.14/24 brd 10.0.2.255 scope global secondary eth0:14inet 10.0.2.15/24 brd 10.0.2.255 scope global secondary eth0:15inet 10.0.2.16/24 brd 10.0.2.255 scope global secondary eth0:16

解决方法:修改脚本,把所有新添加的ip别名的都设成和eth0一个网段的,这样所有新加ip别名都是eth0的secondary了,任意删除一个secondary不会影响其他的ip别名。

转载于:https://blog.51cto.com/daiqingyang/1330938

ip别名删除第一个,其余别名就自动删除的分析相关推荐

  1. 输入一个字符后后面一个字符就会自动删除

    台式电脑:键盘上的insert按键退出 笔记本:Fn+insert按键退出

  2. linux mysql 删除表脚本_linux shell脚本自动删除mysql表前3个月的数据

    RDS有一个数据库表tbl_online表,有6千万数据,需要清理,保留3个月. 步骤如下:创建月表 将需要删除的数据写入月表 删除数据 优化表 shell如下: #!/bin/bash base=& ...

  3. 从 Python 中的字符串中删除最后一个分号或者逗号

    第一种方法 使用 str.rstrip() 方法从字符串中删除最后一个逗号,例如 new_str = my_str.rstrip(';'). str.rstrip() 方法将返回删除尾随逗号的字符串副 ...

  4. html5滑动删除置顶,html5向左滑动删除特效

    html5向左滑动删除特效 * { padding: 0; margin: 0; list-style: none; } header { background: #f7483b; border-bo ...

  5. Windows自动删除n天前的文件的批处理脚本

    数据库每天备份文件,然而只需要保留七天的备份即可,编写一个批处理脚本文件自动删除七天前的文件并设置定时任务 自动删除文件需要用到forfiles命令 forfiles参数: /p 指定的路径 /s 包 ...

  6. 接口规范 12. 自动删除相关接口

    12 自动删除相关接口 12.1.查询自动删除任务 用途 查询服务器上的自动删除任务. 自动删除任务是一种运行在服务器上的服务,按照定义的规则自动删除过期的视频内容.例如,对于监控和视频直播类业务,可 ...

  7. linux删除每行首字符,vim技巧:删除行首、行末的空白字符,删除空白行

    使用 :help + 命令查看 + 的含义如下: + Matches 1 or more of the preceding atom, as many as possible. 使用 :help /* ...

  8. Elasticsearch中别名alias相关操作(创建、更新、删除)

    1.索引别名概述 在Elasticsearch中,别名(alias)是一种将一个或多个索引(index)映射到一个逻辑名称上的方式.通过使用别名,我们可以为目标索引提供简洁.易于理解的名称,并将多个索 ...

  9. bash 别名_必不可少的Bash别名

    bash 别名 Bash别名是用新命令补充或覆盖Bash命令的方法. Bash别名使用户可以轻松自定义其在POSIX终端中的体验. 它们通常在$ HOME / .bashrc或$ HOME / bas ...

  10. mysql 根据一张表删除另一张表_根据表删除另一个表_MySQL

    bitsCN.com 根据表删除另一个表 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: 1. delete from t1 where 条件 2.delete t ...

最新文章

  1. 企业IT运维的“安全终结者”-堡垒机指南
  2. 【Python】青少年蓝桥杯_每日一题_9.27_输出最大值最小值平均值
  3. eslint 保存自动格式化_ESLint一款可组装的JavaScript和JSX检查工具
  4. java stl分解_[STL训练]寻梦-题解(Java代码)极简思路
  5. 解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题
  6. 提升漏洞修复率,DevSecOps真的很有一套
  7. fastapi学习(二):路径参数获取与GET、POST参数获取
  8. Entity Framework 6.x Code First 基础
  9. 【半原创】将js和css文件装入localStorage加速程序执行
  10. 迅雷2019校园招聘 内推码
  11. STS安装lombok插件
  12. Android基于腾讯X5内核的WebView(超级浏览器)
  13. 2021年 最全面 软件测试工程师面试题及答案
  14. SpringBoot全局异常处理(三十)
  15. vim模式下报错E37: No write since last change No write since last change for buffer “ “
  16. amigo幸运字符什么意思_python3基础01数值和字符串(一)
  17. 配置H3C设备无线AP多vlan步骤
  18. UG NX 12 草图设计
  19. RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is
  20. css初级之高级语法

热门文章

  1. 关闭图片 pycharm_博士大佬总结的Pycharm 常用快捷键思维导图,收藏!
  2. android wear 兼容问题,【悲剧了】仅 1/4 安卓手机兼容 Android Wear - 爱应用
  3. 基于阿里云用C/C++做了一个http协议与TCP协议的web聊天室的服务器——《干饭聊天室》
  4. 青海省计算机应用能力考试,青海省2015年职称计算机应用能力考试西宁考区四月份考试安排通知...
  5. 高品质摄影作图台式计算机推荐,浅谈高质量摄影照片后期输出的打印机选择
  6. java好过去前一天日期_Java-日期保存为前一天
  7. 申报成功后怎样修改_每日分享|电子税务局操作指引之更正错误申报
  8. 基于注解的 AOP 配置
  9. python函数结构图_Python数据结构与算法之图结构(Graph)实例分析
  10. 大佬来告诉你在遇到B站崩了,如何防止类似事故的出现?