Chinaunix首页 | 论坛 | 博客
  • 博客访问: 38162
  • 博文数量: 27
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 35
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-07 12:17
文章分类
文章存档

2014年(14)

2013年(13)

我的朋友

分类: LINUX

2014-03-17 21:57:55

原文地址:shell编程试题 作者:《一剑》飘香

1.写一个脚本getinterface.sh,脚本可以接受参数(i,I,a),完成以下任务:
  (1)使用以下形式:getinterface.sh [-i interface|-I IP|-a]
  (2)当用户使用-i选项时,显示其指定网卡的IP地址;
  (3)当用户使用-I选项时,显示其后面的IP地址所属的网络接口;
  (4)当用户单独使用-a选项时,显示所以网络接口及其IP地址(lo除外);
 
#!/bin/bash
#
usage() {
echo "Unknown options USAGE:`basename $0` [-i interface|-I IP|-a]"
exit 1
}
while getopts ":i:I:a" SWITCH
  do
    case $SWITCH in
      'i')
        INTER=$OPTARG
        echo "${INTER}'s IP is:" `ifconfig $INTER | grep "inet" |cut -d: -f2 |cut -d" " -f1`
        ;;
      'I')
        IPADD=$OPTARG
        echo "${IPADD}'s interface is:" `ifconfig |grep -B 1 "$IPADD" | head -1 | cut -d" " -f1`
        ;;
      'a')
        ALL=$OPTARG
        echo -e "ALL information except lo is:\n"
       ifconfig | grep -v "lo"
        ;;
      \?)
        usage
        ;;
    esac
  done
shift $[$OPTIND-1]

 
2.写一个脚本/sbin/datamonitor.sh,要求:
 (1)判断/data目录是否存在,且挂载了一个存储设备(通过grep /etc/mtab文件实现);
 (2)如果是,则分别显示此设备上总的空间大小和可用空间大小;如果可用空间大小与总空间大小之比低于20%,则以红色显示警告信息;
 (3)同时显示总的inode条目的数目和可用inode条目的数目;如果可用可用inode条目的数目与总的inode条目的数目之比低于20%,则以红色显示警告信息;
 (4)以root用户的身份设置此脚本每两小时执行一次;
 
#!/bin/bash
#
if [ -d /data ] && cat /etc/mtab |grep "/data" &>/dev/null ; then
  echo "The information on /dev/sda5 are:  Size   Avail"
  MYDEV=`df -h |grep "/dev/sda5" |cut -d" " -f1`
  SIZE=`df -h |grep "/dev/sda5" |cut -d" " -f14`
  AVAIL=`df -h |grep "/dev/sda5" |cut -d" " -f19`
  USED=`df -h |grep "/dev/sda5" |cut -d" " -f22 |cut -d"%" -f1`
  echo -e "$MYDEV \t $SIZE  \t$AVAIL"
  echo "The information on /dev/sda5 are:  Inodes  IFree"
  MYDEV=`df -h |grep "/dev/sda5" |cut -d" " -f1`
  INODES=`df -ih |grep "/dev/sda5" |cut -d" " -f16`
  IFREE=`df -ih |grep "/dev/sda5" |cut -d" " -f26`
  IUSED=`df -ih |grep "/dev/sda5" |cut -d" " -f30 |cut -d"%" -f1`
  echo -e "$MYDEV  \t $INODES \t $IFREE"
  if [ $USED -gt 80 ] ; then
    echo -e "\033[31mYou shoud be carefull\033[0m"
  fi
  if [ $IUSED -gt 80 ] ; then
    echo -e "\033[31mYou shoud be carefull\033[0m"
  fi
fi
阅读(348) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~