zoukankan      html  css  js  c++  java
  • 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声明数值类型

      

      或

      

  • 相关阅读:
    不干就不需要知道,不需要知道就不想知道,不想知道就永远不知道,猪混几十年还是猪
    Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)
    IT生涯, 我的常用软件清单
    WIN10以后如果Manifest中不写支持WIN10的话,获取版本号的API获取的是6
    大促准备流程
    T4模板合并js
    maven/eclipse搭建ssm(spring+spring mvc+mybatis)
    如何理解分布式和区块链技术
    MaidSafe.net,一个完全去中心的化的云存储系统
    Akka.NET是Java/Scala 流行框架Akka的一个 .NET 开源移植
  • 原文地址:https://www.cnblogs.com/huiyenashen/p/4571553.html
Copyright © 2011-2022 走看看