linux shell脚本神一般的测试案例

本人对shell脚本一点都不了解,工作中用到了shell脚本,所有就只能赶鸭子上架,搜度娘一点一点的写了。在搜索的过程中看到了比较好的案例。大家可以参考一下。以后肯定可以用的到。

声明本文转载至 http://www.educity.cn/linux/1241314.html

脚本1:为root用户编写登录欢迎脚本:

  1、用vi命令在/root目录是新建一个脚本文件welcome.sh,内容如下:

  

  2、使用chmod命令给welcome.sh文件增加执行(x)权限

  3、修改/root/.bash_profile文件,在root用户每次登录系统时调用welcome.sh脚本程序

  #vi /root/.bash_profile添加如下内容:

  

  4、验证:使用root用户重新登录,验证欢迎脚本的输出信息

  脚本2:编写脚本程序,用来启动、停止和显示系统服务状态:

  1、用vi命令在/root/bin目录是新建一个脚本文件status用来查看crond服务的状态,内容如下:

  

  设置x权限

  脚本文件stop和start与status类似,稍作修改即可。

  脚本3:编写运行状况监控脚本/opt/monitor.sh,用于记录CPU负载、内存和交换空间、磁盘空间、最近的用户登录情况等信息,以及当时的时间信息。

  1、用vi命令在/opt目录是新建一个脚本文件monitor.sh,内容如下:

  #!/bin/bash

  mkdir -p /var/log/runrec

  RecFile="/var/log/runrec/running.today"

  RecTime=`date  +"%Y-%m-%d %H:%M"`

  LoadRec=`uptime`

  MemRec=`free -m`

  DiskRec=`df -hT`

  LastLoginRec=`last -n 20`

  echo"++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  Record Time: $RecTime

  cpu Load information:$LoadRec

  Memory information:$MemRec

  Disk Usage information:$DiskRec

  Last login 20 users record:$LastLoginRec">> $RecFile

  2、使用chmod命令给monitor.sh文件增加执行(x)权限

  3、测试脚本是否能正常运行及输出正确信息

  4、设定计划任务,要求每隔15分钟执一次monitor.sh脚本,并确认crond服务已启动。

  创建计划任务:

  #crontab –e   内容如下

  */15 * * * */opt/monitor.sh

  查看crond服务状态并设置crond开机自动起动。

  #service crondstatus

  #chkconfig--level 35 crond on

  脚本1:编写SHELL脚本监控主机

  1、用vi命令在/root目录是新建一个脚本文件sysmon.sh,内容如下:

  

  附:

  a:使用df命令提取根分区的磁盘占用率:如下图所示:

  使用df  -h命令查看磁盘分区的使用情况,其中根分区的已用空间是10%

  

  用如下图中的命令可以过滤磁盘的已用空间

  

  b:使用mpstat命令提取CPU使用率(要确保sysstat软件包已安装)。如下图所示:其中%idle表示CPU空闲时间百分比

  

  用如下图中的命令可以得到CPU已用空间并赋值给变量CUG

  

  c:使用free命令查看内存的使用情况。其中划红线的表示空余内存。

  

  用如下图中的命令可以得到内存使用率并赋值给变量MUG

  

  2、使用chmod命令给sysmon.sh文件增加执行(x)权限

  3、测试sysmon.sh脚本的执行情况

  a:配置DNS服务负责解析邮件服务器的MX和A记录

  b:修改/etc/nf文件指向DNS服务器地址

  c:配置邮件服务器

  如果是postfix服务器,配置如下:

  

  修改main.cf文件,修改后内容如下:

  

  重启postfix服务。并发测试邮件。

  d:确认有可用的邮件服务器,然后调低监控阈值,执行sysmon.sh脚本进行测试

  e:查收名为的邮箱,确认警告邮件内容

  

  邮件内容如下:

  

  4、设置crontab计划任务,每隔半小调用一次sysmon.sh脚本程序

  

  重新启动crond服务。

  脚本2:编写SHELL脚本(mkbak.sh)提示用户指定备份目录的路径,若目录已存则显示提示信息后跳过,否则显示相应信息后创建该目录。

  

  脚本3:编写脚本程序(chkdbsvr.sh)用于每隔5分监视一次系统服务mysqld的运行状态,若发现mysqld进程已经停止,则在/var/log/messages文件中追加写入日志信息(包括当时时间),并重启mysqld服务;否则不进行任何操作

  

  脚本4:编写脚本程序用于监视系统服务httpd的运行状态,要求如下

  当服务状态失常时在"/var/log/htmon.log"文件中记入日志信息。

  自动将状态失常的httpd服务重新启动。若重启httpd服务失败,测尝试重新启动服务器主机

  结合crond计划任务,每周一至周五每隔15分钟执行一次监测任务

  1、在/opt目录中创建脚本htmon.sh,脚本内容如下

  #! /bin/bash

  /sbin/service httpdstatus &> /dev/null

  if [ $? -ne 0 ] ; then

  echo "`date`" >> /var/log/htmon.log

  /sbin/service httpd restart

  /sbin/service httpd status &>/dev/null

  if [ $? -ne 0 ] ; then

  /sbin/chkconfig --level 2345 httpd on

  /sbin/shutdown -r now

  fi

  fi

  2、创建crontab计划任务

  */15 * * * * /opt/htmon.sh

  脚本1:编写一个名为getarp.sh的脚本,记录局域网中各个主机的MAC地址。保存到/etc/ether文件中,若此文件已存在,应先进行备份。第行一条记录,第1列为IP地址,第2列为对应的MAC地址。

  分析:

  假定要扫描的网段是192.168.4.0,将192.168.4.赋值给变量NADD,作为检测地址的前缀

  使用”arping  -c 2 -w 1 被检测主机的IP”命令发送ARP请求,记录MAC地址

  

  用while循环语句检测目标主并记录MAC地址,这里检测的主机地址为2~3

  1、用vi创建一个名为getarp.sh脚本,内容如下:

  #!/bin/bash

  NADD="192.168.4."

  FILE="/etc/ethers"

  [-f $FILE ] && /bin/cp -f $FILE $FILE.old

  HADD=1

  while[ $HADD -lt 4 ]

  do

  arping -c 2 -w 1 ${NADD}${HADD} &>/dev/null

  if [ $? -eq 0 ] ; then

  arp -n | grep ${NADD}${HADD} | awk ‘{print$1,$3}‘ >> $FILE

  fi

  let HADD++

  done

  2、给脚本getarp.sh增加x权限

  3、执行脚本,查看检测到的MAC信息

  脚本2:编写一个脚本scanhost.sh,检查有哪些主机开启了匿名FPT服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描的端口号为21

  环境描述:假定192.168.4.2主机为匿名访问的FTP。 192.168.4.3非匿名访部的FTP。

  创建扫描文件/etc/ethers,内容如下:

  

  这里采用wget下载工具:wget ftp://IP/

  1、用vi创建一个名为scanhost.sh脚本,内容如下:

  #!/bin/bash

  TARGET=$(awk‘{print $1}‘ /etc/ethers)

  echo"follow is anonymous FTP server:"

  forIP in $TARGET

  do

  wget –T 3  -t 3 ftp://$IP/ &> /dev/null

  if [ $? -eq 0 ] ; then

  echo $IP

  fi

  done

  参数提示:-T 连接超时时间;-t 连接重试次数

  2、给脚本getarp.sh增加x权限

  3、执行脚本,查看扫描到的信息

  脚本3:计算/etc/目录中所有nf配置文件所占用的总空间大小

  用vi创建一个名为confsize.sh脚本,内容如下:

  #!/bin/bash

  sizenums=$(ls-l $(find /etc/ -type f -a -name nf) | awk ‘{print $5}‘)

  total=0

  fori in $sizenums

  do

  total=$(expr $total + $i)

  done

  echo"total size of conf files: $total bytes."

  脚本4:编写一个脚本chkfileown.sh,对于使用bash作为登录shell的系统中,检查他们在/opt目录中的文件数量并列出具体的数值及对应的用户账户

  1、用vi创建一个名为chkfileown.sh脚本,内容如下:

  #!/bin/bash

  DIR="/opt/"

  validusers=$(grep"bash$" /etc/passwd | awk -F: ‘{print $1}‘)

  forusername in $validusers

  do

  num=$(find $DIR -user $username | wc -l)

  echo "$username have $num files."

  done

  2、给脚本getarp.sh增加x权限

  3、执行脚本,查看执行后的信息(注:/opt目录下若没有任何文件,可事先创建一些测试文件)

  脚本5:编写脚本用于批量添加用户,要求如下:

  要求提供交互功能,当管理员执行该脚本时,可以根据提示指定需添加的用户数量(少于100)、用户名前缀、并能够设置这些用户账户的失效时间,初始密码。

  用户名编号统一使用两位数,如使用”01”、”02”、”03”的形式,而不是”1”、”2”、”3”的形式。

  编写对应的批量删节除用户脚本,要能够通过命令行参数指定用户名前缀,执行脚本后删除所有使用了该前缀的用户账户,但要防止删除root用户。

  批量添加用户脚本:

  1、批量添加用户脚本myuadd.sh内容如下:

  #!/bin/bash

  read-p "input nu <1-99>:" nu

  read-p "input name:" name

  read-p "input date <YYYY-MM-DD>:" date

  read-p "input password:" password

  a=1

  if[ $nu -lt 100 ]

  then

  while[ $a -le $nu ]

  do

  if [ $a -lt 10 ]

  then

  useradd -e $date"$name"0"$a"

  echo "$password" | passwd--stdin "$name"0"$a" &>/dev/null

  else

  useradd -e $date"$name""$a"

  echo "$password" | passwd--stdin "$name""$a" &>/dev/null

  fi

  a=`expr$a + 1`

  done

  fi

  2、给脚本myuadd.sh增加x权限

  3、执行脚本myuadd.sh,添加用户

  4、验证结果:查看/etc/passwd文件是否添了新用户

  批量删除用户脚本:

  1、批量删除用户脚本myudel.sh内容如下:

  #!/bin/bash

  if[ $# -le 0 ] ; then

  echo "error:the prefix of users has notbe specified."

  echo "usage:$0 nameprefix"

  exit 1

  fi

  tarjcvf /root/f.tar.gz /etc/passwd /etc/shadow /etc/group &>/dev/null

  tobedel=`grep"$1" /etc/passwd | cut -d ":" -f 1 | grep -v"root"`

  foru in $tobedel

  do

  userdel -r $u &> /dev/null

  done

  2、给脚本myudel.sh增加x权限

  3、执行脚本myudel.sh,删除用户。如myudel.shcaiwu03或myudel.sh caiwu

  4、验证结果:查看/etc/passwd文件中已删除的用户是否还存在。

  附:

  我们可以用env或export命令查看环境变量,使用set命令查看所有变量(包括环境变量和自定义变量),使用unset命令删除变量

  LINUX系统中大多数版本都有随机数生成器,就是/dev/random文件。可以通过这个随机数文件相关的系统环境变量$RANDOM来随机取得随机数。在BASH环境下,这个RANDOM变量的内容介于0——32767之间,(man bash,搜索 RANDOM 可以看到说明)所以,只要echo $RANDOM时,系统就会主动随机取出一个介于0——32767的数值。例如要想0-9之间的随机数时,可以用declare声明数值类型

  

  或

  

时间: 2024-10-29 04:52:14

linux shell脚本神一般的测试案例的相关文章

Linux Shell 04 数字/字符串/文件测试

一. 数字测试 格式:n1  -op  n2 测试操作op: eq/ne/le/ge/lt/gt    -->    等于/不等于/小于等于/大于等于/小于/大于 1. 数字比较可以使用特殊的(())操作符,用法更接近于C语言,见数字测试. 二. 字符串测试 s1 = s2 #s1与s2是否相同 s1 != s2  #s1与s2是否不相同 s1 < s2 #s1是否小于s2 s1 > s2 #s1是否大于s2 -n s1 #s1长度是否大于0 -z s1  #s1长度是否为0 1. 字符

Linux Shell脚本编程while语句案例

1,每隔3秒,打印一次系统负载 #!/bin/bash while true do uptime sleep 3 done 2,把监控结果保存到文件,在后台执行,然后用tail -f监控文件变化 [email protected]:~/linux/shell/flow_control$ sh while.sh & [1] 12867 #!/bin/bash while true do uptime >> log.txt sleep 3 done [email protected]:~/

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp

shell脚本应用(一)案例

案例一 ·为root用户编写登录欢迎脚本,报告当前主机中的进程数.已登录用户数.根文件系统的磁盘使用率. 1.用vim命令在/root目录是新建一个脚本文件welcome.sh,内容如下: 注意:'{print $5}' 这里使用的是单引号,不是反撇号. 2.使用chmod命令给welcome.sh文件增加执行(x)权限 3.修改/root/.bash_profile文件,在root用户每次登录系统时调用welcome.sh脚本程序 4.验证:使用root用户重新登录,验证欢迎脚本的输出信息 案

《Linux shell变量总结回顾》RHEL6

由于上篇文章总结的不是很详细,有很多方面并未涉及到shell各个方面,所以发表此文章对shell做了更全面的总结: 文章版权:http://www.cnblogs.com/linux-super-meng/ 环境变量路径: [[email protected] ~]# set   //查看到的是局部变量和全局变量2种 [[email protected] ~]# env  //查看系统的全局环境变量 [[email protected] ~]# echo $PATH  //查看系统环境变量路径

《Linux shell变量总结回顾》RHEL6(转)

文章版权:http://www.cnblogs.com/linux-super-meng/ 环境变量路径: [[email protected] ~]# set   //查看到的是局部变量和全局变量2种 [[email protected] ~]# env  //查看系统的全局环境变量 [[email protected] ~]# echo $PATH  //查看系统环境变量路径 [[email protected] ~]# export $PATH  //也可以使用export查看环境变量路径

Linux Shell脚本面试25问

Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务. Q:2 什么是默认登录shell,如何改变指定用户的登录shell 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的.使用chsh命令可以改变默认的shell.示例如下所示: # chsh <用户名> -s <

Linux shell脚本-基础学习笔记

Linux脚本能力不是太强,最近再补习下,毕竟linux shell在日常工作中还是很普遍的, 用起来更方便.省时省力. 以下是学习笔记,偏理论,后面有几个例子,供参考. shell脚本组成元素系统命令.文本处理工具(grep\sed等).变量.条件判断.循环结构和函数 -------------------------------------------- 三剑客:grep,sed,awk,还有wc,sort,head等 ------------------------------------

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执