2019独角兽企业重金招聘Python工程师标准>>>

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务:

1)使用格式:getinterface.sh [-i interface | -I ip]

2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项时,显示其指定ip所属的网卡。

例: sh getinterface.sh -i eth0 或者

sh getinterface.sh -I 192.168.0.1

3)当用户使用除[-i | -I]选项时,显示[-i interface | -I ip]此信息。

4)当用户指定信息不符合时,显示错误。(比如指定的eth0没有,而是eth1时)

#!/bin/bash
ip add |awk -F ': ' '$1 ~ "^[1-9]" {print $2}' > /tmp/ifs.txt
get_ip()
{ip add show dev $1 |grep inet |awk '{print $2}' |awk -F '/' '{print $1}'
}for eth in `cat /tmp/ifs.txt`
domyip=`get_ip $eth`if [ -z "$myip" ]thenecho $eth elseecho $eth $myip fi
done > /tmp/if_ip.txt if [ $# -ne 2 ]
thenecho "请输入正确的格式: bash $0 -i 网卡 或者 bash $0 -I ip"exit
fiif [ $1 == "-i" ]
thenif awk '{print $1}' /tmp/if_ip.txt |grep -qw $2theneth=$2ip1=`awk -v aeth=$eth '$1==aeth' /tmp/if_ip.txt|sed "s/$eth //"`echo "网卡$2的ip是 $ip1"elseecho "你指定的网卡不对,系统中的网卡有:`cat /tmp/ifs.txt|xargs`"exitfi
elif [ $1 == "-I" ]
thenif grep -qw " $2 "  /tmp/if_ip.txttheneth=`grep -w " $2 " /tmp/if_ip.txt|awk '{print $1}'`echo "IP $2对应的网卡是$eth"elseecho "你指定的ip不对,系统中的IP有:`ip add |grep inet |awk '{print $2}'|awk -F '/' '{print $1}'|xargs`"exitfi
elseecho "请输入正确的格式: bash $0 -i 网卡 或者 bash $0 -I ip"
fi

2、写一个脚本产生随机3位的数字,并且可以根据用户的输入参数来判断输出几组。 比如,脚本名字为 number3.sh。

执行方法:

1)bash number3.sh 会产生一组3位数字。

2)bash number3.sh 10 会产生10组3位数字。

#!/bin/bash
get_number()
{for i in `seq 0 2`do a[$i]=$[$RANDOM%10]done echo ${a[@]}|sed s'/ //g'
}if [ $# -eq 0 ]
thenget_number
elif [ $# -eq 1 ]
thenn=`echo $1|sed 's/[0-9]//g'`if [ -n "$n" ]thenecho "给定的参数必须是一个数字"exitfifor i in `seq 1 $1`doget_numberdone |xargs
elseecho "格式不对,正确的是格式是sh $0 [n],这里的n是一个数字。"
fi

3、写一个shell,先判断是否安装httpd和mysql,没有安装进行安装,安装了检查是否启动服务,若没有启动则需要启动服务。

#!/bin/bash
if_install()
{rpm -q $1 >/dev/null 2>/dev/null if [ $? -eq 0 ]thenecho "$1已经安装"return 0elseecho "$1没有安装"return 1fi
}if_install httpd
if [ $? -eq 0 ]
thenif ! pgrep httpd >/dev/null thenservice httpd startfi
elseyum install -y httpd
fiif_install mysql-server
if [ $? -eq 0 ]
thenif ! pgrep mysqld >/dev/nullthenservice mysqld startfi
elseyum install -y mysql-server
fi

4、用shell脚本判断输入的日期是否合法。

比如20170110就是合法日期,20171332就不合法。

#!/bin/bash
if [ $# -ne 1 ] || [ ${#1} -ne 8 ]
thenecho "请输入正确的格式,sh $0 yyyymmdd"exit 1
fiy=`echo ${1:0:4}`
m=`echo ${1:4:2}`
d=`echo ${1:6:2}`if echo $d|grep -q "^0"
thend=`echo ${1:6:2}|sed 's/^0//'`
fiif cal $m $y >/dev/null 2>/dev/null
thenif ! cal $m $y|grep -qw "$d"thenecho "你给的日期是不合法的"elseecho "日期合法"fi
elseecho "你给的日期不合法"
fi

5、写一个监控网卡的脚本,需要满足以下要求:

  1. 每10分钟检测一次指定网卡的流量。

  2. 如果流量为0,则重启网卡。

#!/bin/bash
LANG=en
sar -n DEV 1 10|grep -w "$1" > /tmp/sar.tmp
in=`grep "Average:" /tmp/sar.tmp|awk '{print $5}'|sed 's/\.//'`
out=`grep "Average:" /tmp/sar.tmp|awk '{print $6}'|sed 's/\.//'`if [ $in == "000" ] && [ $out == "000" ]
thenifdown $1ifup $1

转载于:https://my.oschina.net/yuanhaohao/blog/3001991

day21:shell相关推荐

  1. 第13章代码《跟老男孩学习Linux运维:Shell编程实战》

    本书历史上已出版最实战的Shell高级编程实战书籍,没有之一,和市面书籍不同,本书是作者经过18年的运维工作及教学工作后,创新类企业级实战书籍,适合所有学习及从事Linux相关工作的读者. <跟 ...

  2. 69:shell脚本介绍 | shell脚本结构 | 执行data命令用法 | shell脚本中变量

    2019独角兽企业重金招聘Python工程师标准>>> 1.shell脚本介绍: shell是一种脚本语言和传统的开发语言相比,会比较简单: shell有自己语法,可以支持逻辑判断. ...

  3. 老李分享:shell 监控cpu,memory,load average 1

    老李分享:shell 监控cpu,memory,load average poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...

  4. Linux基础:Shell脚本学习

    一.shell简介 Shell是用户和Unix/Linux内核沟通的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行 ...

  5. shell 输出数据到文本_Linux运维工程师从基础到进阶:Shell变量知识梳理

    Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂,却是云计算开发人员必须要掌握的技术之一.接下来的广州云计算培训小 ...

  6. 每天学一点儿shell:Shell的常用语法规则

    文章目录 Shell 参数传递 Shell 数组 Shell 基本运算符 算数运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符(重点) 文件测试运算符 Shell 常用语法 Shell 函数 ...

  7. @value 静态变量_Linux运维工程师从基础到进阶:Shell变量知识梳理

    Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂,却是云计算开发人员必须要掌握的技术之一.接下来的广州云计算培训小 ...

  8. 基础运维:shell入门

    一.系统变量 在命令行提示符直接执行env.set查看系统或环境变量.env显示用户环境变量,set显示Shell预先定义好的变量以及用户变量.可以通过export导出成用户变量. [root@leo ...

  9. AIX上报:“Shell will time out in 60 seconds” 解决办法

    本篇文章主要介绍了"AIX上报:"Shell will time out in 60 seconds" 解决办法",主要涉及到AIX上报:"Shell ...

最新文章

  1. linux红帽网页中文乱码解决,【linux学习笔记】安装redhat时中文显示乱码(小方框)解决方法...
  2. 查看ocx控件方法_Appium自动化测试入门教程No.8——定位控件
  3. 解决Visual Studio 找不到报表控件、rdlc中文乱码
  4. MySql 自动更新时间为当前时间
  5. 计算机硬盘修复教程,DiskGenius数据恢复教程 教你电脑硬盘数据如何恢复
  6. Spectra Logic磁带库成SGI方案中标准化产品
  7. 「leetcode」104559:求树的最大深度
  8. mysql 防火墙 centos_CentOS 开启防火墙 firewall ,mysql 远程访问
  9. java 快排_总结Java中的排序算法:选择排序amp;快排amp;堆排序amp;归并排序(后附视频讲解)...
  10. 为什么要选择crm私有化布署?
  11. 《指数基金投资从入门到精通》读书笔记
  12. Android中的传感器之---光线传感器
  13. Java学习day07-Java高级编程-多线程
  14. 学历学籍系统-Web服务开发实验(REST API)
  15. 《软件工程与计算》考试复习笔记
  16. 读《Halting in Random Walk Kernels》
  17. Quantopian 入门系列二 - 流水线 (上)
  18. Flink+Iceberg搭建实时数据湖实战
  19. 17小学计算机课程目录,课程
  20. 俏江南“倒闭”真相:对员工好坏,直接决定了企业的生死!

热门文章

  1. 想利用自己的技能去做副业,但又无从下手怎么办?
  2. endnote生成参考文献(可自定义)——小白手把手
  3. iWatch的功能预测
  4. 看C语言教学视频后第一次写博客
  5. sizebox模型下载_Beware of box model size (留心盒子模型大小)
  6. 【报错记录】OBS Studio 显示器捕获黑屏 Nvidia控制面板 “显示设置不可用 未连接GPU显示器”
  7. 蒙特卡洛方法生成的电动汽车充电需求曲线 matlab平台建模
  8. mysql数据库分表备份脚本_MySQL分库分表备份数据库脚本的操作
  9. oracle 字符超长,oracle存储超长字符串
  10. EPA的藻类预警App