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

摘要:
我对shell脚本一无所知。当我在工作中使用shell脚本时,我只能把鸭子赶到书架上,一点一点地寻找杜娘来写作——ne0];然后/sbin/chkconfig--level2345httpdon/sbin/shutdown rnow-fi 2。创建crontab计划任务*/15**/opt/htmon.sh脚本1:编写一个名为getarp.sh的脚本,记录LAN中每个主机的MAC地址。

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

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

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

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

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

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

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

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

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

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

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

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

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

  设置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,内容如下:

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

  附:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  c:配置邮件服务器

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

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

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

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

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

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

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

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

  邮件内容如下:

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

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

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

  重新启动crond服务。

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

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

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

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

  脚本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地址

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

  用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,内容如下:

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

  这里采用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声明数值类型

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

  或

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

免责声明:文章转载自《linux shell脚本神一般的测试案例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇FullCalendar应用——整合农历节气和节日[转]ZABBIX API简介及使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ubuntu20.04安装Docker时摊上的那些事儿

官方下载地址 首先,那肯定是跟着官方指南走啊,地址: https://docs.docker.com/engine/install/ubuntu/ 第一次选择 当走到第三步的时候,迎来了第一次选择。我第一次尝试时,直接“拍着脑袋”选择了 arm64。我想第一个和第三个不是一样嘛~ E: 软件包 docker-ce 没有可安装候选 但是,apt-get i...

Visual Studio Express 2012 安装缺少头文件、库文件的问题

今天安装好Visual Studio Express 2012之后,新建了一个VC++ Win32 Console Application,输入一个简单的 Hello world 代码,竟然编译不过,提示缺少头文件。 fatal error C1083: 无法打开包含文件: 'stdio.h': No such file or directory 在VS安...

实验一GIT代码版本管理

实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理; 2)   熟练掌握git的基本指令和分支管理指令; 实验内容: 1)安装git 2)初始配置git ,git init git status指令 3)掌握git log ,git add ,git diff 指令 4) 掌握git tag git branch,git...

Android项目目录结构模板以及简单说明

1) src  文件   编写java代码的文件目录,遵循java的命名规范、分包 2) gen  文件      包含了android的资源文件的标识符,是不需要程序员维护,是自动添加的 3) assets 文件  源生资源文件;保存应用的资源文件,例如:音频文件、视频文件、不经常被用户修改的文件 4) bin 文件  包含编译生成apk的应用程序xx...

生成CPIO格式的initrd

因为initrd.img只是系统启动的一个虚拟磁盘而已,系统启动完成后就没有用处了,因此,我决定用busybox来完成一些必要的启动工作(用的是busybox-1.5.1,配置文件如下) cd /tmp mkdir initrd cd initrd mkdir dev proc sys lib mnt mkdir -p lib/modules/kernel...

十大Web压力测试工具

下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能。 Grinder – Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网...