免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 13517 | 回复: 26
打印 上一主题 下一主题

[分享]一个检测操作系统基础配置的shell脚本for solaris&redhat [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-04 08:34 |只看该作者 |倒序浏览
系统装多了难免会出现各种人为失误或遗漏,比如
  • 主机名和/etc/hosts文件中的配置不一致
  • 忘记在/etc/hosts给主机加别名
  • 漏配了缺省网关
  • 把网卡地址敲成网关地址
  • ntp-sever或client没配置



特别是一次在调整18台rhel 5.1 x64的地址段时上直接把某台网卡地址配成网关,更不幸的是折腾了2天才找出来。。。

含恨之下花了2天写了个脚本专门检测这种低级失误,水平有限,欢迎各位继续建议优化挑错。

两个文件,check_configure.conf是配置文件,check_configure.sh是可执行脚本

检测结果有四种:
  • OK           通过
  • FALSE        失败,表示没有该项配置
  • WARNNING     警告,表示该项配置不太规范,可能存在潜在的问题,但通常情况下是可以正常工作的,可视情况忽视或改正
  • ERROR        错误,表示该配置需要进行修正


redhat 5.1,solaris 10上运行通过,执行演示:

暂时只检测上述5项,大家可帮忙补充还有哪些经常出现的低级失误,在后续版本中可一并加上
bash-3.00# ./check_configure.sh
Usage: ./check_configure.sh {redhat|solaris} [interval-time]
        interval-time's default value is 1,means 1 second.
        for example:./check_configure.sh solaris 0 ,0 means no stop.

bash-3.00# ./check_configure.sh solaris

1.Checking hostname <--> /etc/hosts                                             OK

2.Checking hostname_alias                                                       OK
        34.29.79.132  db01     db01.com loghost

3.Checking default_router configuration
        34.29.79.129                                                            OK

4.Checking default_router <--> NIC's ip_address                                 OK
4.Checking default_router <--> NIC's ip_address                                 OK
4.Checking default_router <--> NIC's ip_address                                 OK
4.Checking default_router <--> NIC's ip_address                                 OK

5.Checking ntp_server configuration                                             OK
        /*--- running 'svcs ntp' ---*/
STATE          STIME    FMRI
online         Aug_03   svc:/network/ntp:default
        /*--- running 'ntpq -p ---*/
     remote           refid      st t when poll reach   delay   offset    disp
==============================================================================
*34.128.34.7    32.129.24.6     5 u  368 1024  377     1.56   -0.097    0.15
+34.129.79.141  34.128.34.7     6 u  239 1024  377     0.93   -0.127    0.12

bash-3.00#



脚本代码下载: check.tar (8.5 KB, 下载次数: 173)

脚本代码展示,欢迎各路板砖

  1. # cat check_configure.conf
  2. #========================================================
  3. #定义各种配置文件
  4. #========================================================
  5. if [ "$1" = "redhat" ];then

  6.         #主机名配置文件
  7.         #NAME_FILE=/etc/sysconfig/network

  8.         #主机名-ip地址映射文件
  9.         HOST_FILE=/etc/hosts

  10.         #缺省网关配置文件
  11.         GW_FILE=/etc/sysconfig/network

  12.         #网卡的配置文件
  13.         NIC_FILE_HEAD=/etc/sysconfig/network-scripts/ifcfg-

  14. elif [ "$1" = "solaris" ];then

  15.         #主机名配置文件
  16.         #NAME_FILE=/etc/nodename

  17.         #主机名-ip地址映射文件
  18.         HOST_FILE=/etc/hosts

  19.         #缺省网关配置文件
  20.         GW_FILE=/etc/defaultrouter

  21.         #网卡的配置文件
  22.         NIC_FILE_HEAD=/etc/hostname.

  23. fi
  24. #========================================================
  25. #初始化变量

  26. #检测项的间隔时间,这个可以改
  27. interval_time=1

  28. #以下没事就不要改
  29. gateway_configure=0
  30. gateway_num=0
  31. check_item_counts=0

复制代码


  1. # cat check_configure.sh
  2. #!/bin/bash


  3. ###############################################################################
  4. #initial some variable
  5. ###############################################################################

  6. . ./check_configure.conf $1

  7. ###############################################################################
  8. #usage
  9. ###############################################################################

  10. if [ $# = 0 ];then
  11.         echo $"Usage: $0 {redhat|solaris} [interval-time]"
  12.         echo "  interval-time's default value is $interval_time,means $interval_time second."
  13.         exit 1
  14. elif [ -n "$2" ];then
  15.         interval_time=$2
  16. fi
  17. ###############################################################################
  18. #01.    Checking hostname <--> $HOST_FILE 查主机名和/etc/hosts中是否一致
  19. ###############################################################################

  20. echo
  21. ((check_item_counts++))

  22. Check_hostname_result=`grep $HOSTNAME $HOST_FILE|grep -v ^#|wc -l`
  23. if [ $Check_hostname_result = 0 ];then
  24.         echo $check_item_counts".Checking hostname <--> $HOST_FILE                                              ERROR"
  25.         echo "  -->Please Check $GW_FILE & $HOST_FILE file."
  26. else
  27.         echo $check_item_counts".Checking hostname <--> $HOST_FILE                                              OK"
  28. fi

  29. ###############################################################################
  30. #02.    Checking hostname's alias name
  31. ###############################################################################
  32. echo
  33. sleep $interval_time
  34. ((check_item_counts++))

  35. hostname_alias=`grep $HOSTNAME $HOST_FILE|awk '{print $3}'`
  36. if [ "$hostname_alias" = "" ]; then
  37.         echo $check_item_counts".Checking hostname_alias                                                        WARNNING"
  38.         echo "  Advice:'vi $HOST_FILE' and change the follow line"
  39.         echo "          `grep -v ^# $HOST_FILE|grep $HOSTNAME $HOST_FILE`"
  40.         echo "          to follow line:"
  41.         echo "          'grep -v ^# $HOST_FILE|grep $HOSTNAME $HOST_FILE'       $HOSTNAME.com"
  42. else
  43.         echo $check_item_counts".Checking hostname_alias                                                        OK"
  44.         echo "  `grep -v ^# $HOST_FILE|grep $HOSTNAME $HOST_FILE`"
  45. fi

  46. ###############################################################################
  47. #03.    Check default_router,查缺省网关是否配置
  48. ###############################################################################
  49. echo
  50. sleep $interval_time
  51. ((check_item_counts++))

  52. echo $check_item_counts".Checking default_router configuration"

  53. case "$1" in

  54. "redhat")

  55. GATEWAY=`grep ^GATEWAY $GW_FILE 2>/dev/null|awk -F "=" '{print $2}'`

  56. Check_nic_list=`ifconfig |grep -1 "inet addr"|grep HWaddr|awk '{print $1}'`

  57. for i in $Check_nic_list
  58. do
  59.         nic_configure_file=$NIC_FILE_HEAD$i
  60.         Check_nic_result=`grep ^GATEWAY $nic_configure_file|wc -l`
  61.         if [ $Check_nic_result = 1 ];then
  62.                 echo "  Check '$nic_configure_file'                                                     WARNNING"
  63.                 echo "          -->Please remove the entry '`grep ^GATEWAY $nic_configure_file`' from"
  64.                 echo "          -->'$nic_configure_file' to '$GW_FILE'"
  65.                 gateway_configure=1
  66.                 ((gateway_num++))
  67.         fi
  68. done

  69. if [ $gateway_num -gt 1 ];then
  70.         echo "  This OS has $gateway_num GATEWAYs,plz using 'route add' to add static route"
  71. fi

  72. if [ $gateway_configure = 0 ];then
  73.         Check_gateway_result=`grep ^GATEWAY $GW_FILE|wc -l`
  74.         if [ $Check_gateway_result = 0 ];then
  75.                 echo "  Check configuration of$GW_FILE                          FALSE"
  76.                 echo "          -->Please add 'GATEWAY=a.c.b.c' to '$GW_FILE'"
  77.         else
  78.                 echo "  Check configuration of $GW_FILE                         OK"
  79.         fi
  80. fi
  81. ;;

  82. "solaris")
  83.         if [ -f $GW_FILE ];then
  84.                 GATEWAY=`cat $GW_FILE`
  85.                 echo "  $GATEWAY                                                                OK"
  86.         else
  87.                 echo "  $GW_FILE has not existed                                        FALSE"
  88.         fi
  89.         ;;
  90. esac
  91. ###############################################################################
  92. #04.    Check default_router <--> NIC's ip_address 查网关和网卡地址是否冲突
  93. ###############################################################################
  94. echo
  95. sleep $interval_time
  96. ((check_item_counts++))

  97. Check_ip_list=`ifconfig -a|grep  "inet"|awk '{print $2}'|grep -v '127.0.0.1'|sed 's/addr://g'`

  98. for i in $Check_ip_list
  99. do
  100.         if [ "$GATEWAY" = "$i" ];then
  101.                 echo $check_item_counts".Checking default_router <--> NIC's ip_address                                  ERROR"
  102.                 echo "  -->GATEWAY's ip $GATEWAY can not been same as NIC's ip address"
  103.         else
  104.                 echo $check_item_counts".Checking default_router <--> NIC's ip_address                                  OK"
  105.         fi
  106. done

  107. ###############################################################################
  108. #05.    Check ntp
  109. ###############################################################################
  110. echo
  111. sleep $interval_time
  112. ((check_item_counts++))

  113. Check_ntp_client=`crontab -l|grep -v ^#|grep ntpdate|wc -l`
  114. Check_ntp_server=`ntpq -p 2>/dev/null|wc -l`
  115. if [[ $Check_ntp_client = 0 && $Check_ntp_server = 0 ]];then
  116.         echo $check_item_counts".Checking ntp configuration                                                     FALSE"
  117.         echo "  -->Two selection:"
  118.         echo "  -->a) 'crontab -e' and insert '0 12 * * * /usr/sbin/ntpdate 134.128.34.7'"
  119.         echo "  -->b) 'vi /etc/ntp.conf' and 'chkconfig ntpd on' and 'service ntpd start'"
  120. else
  121.         if [ $Check_ntp_client = 1 ];then
  122.                 echo $check_item_counts".Checking ntp_client configuration                                              OK"
  123.                 echo "   `crontab -l|grep -v ^#|grep ntpdate`"
  124.         else
  125.                 echo $check_item_counts".Checking ntp_server configuration                                              OK"
  126.                 case "$1" in
  127.                 redhat)
  128.                         echo "  /*--- running 'service ntpd status' ---*/"
  129.                         service ntpd status
  130.                         echo "  running 'ntpq -p ---*/"
  131.                         ntpq -p
  132.                         ;;
  133.                 solaris)
  134.                         echo "  /*--- running 'svcs ntp' ---*/"
  135.                         svcs ntp
  136.                         echo "  /*--- running 'ntpq -p ---*/"
  137.                         ntpq -p
  138.                         ;;
  139.                 esac
  140.         fi
  141. fi
复制代码

[ 本帖最后由 yuhuohu 于 2010-1-6 11:43 编辑 ]

评分

参与人数 1可用积分 +10 收起 理由
山野村夫 + 10 精品文章

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2009-12-04 08:36 |只看该作者
我先顶一下

论坛徽章:
0
3 [报告]
发表于 2009-12-04 09:30 |只看该作者
不错啊,楼主写shell可以的。

论坛徽章:
0
4 [报告]
发表于 2009-12-04 10:29 |只看该作者
很好,很强大,学习了。

论坛徽章:
2
双鱼座
日期:2014-02-23 12:10:03操作系统版块每日发帖之星
日期:2015-12-17 06:20:00
5 [报告]
发表于 2009-12-04 11:59 |只看该作者
收藏

论坛徽章:
0
6 [报告]
发表于 2009-12-04 12:44 |只看该作者
solaris论坛最近可是越来越热闹了

论坛徽章:
0
7 [报告]
发表于 2009-12-04 13:03 |只看该作者
好东东,收藏

论坛徽章:
0
8 [报告]
发表于 2009-12-04 16:41 |只看该作者
收藏

[ 本帖最后由 yqx1986 于 2009-12-4 16:48 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-12-04 16:51 |只看该作者
收藏

论坛徽章:
10
处女座
日期:2015-01-22 16:08:50技术图书徽章
日期:2018-09-13 11:25:52技术图书徽章
日期:2018-09-13 11:25:45技术图书徽章
日期:2018-09-13 11:25:37技术图书徽章
日期:2018-09-13 11:25:29黑曼巴
日期:2018-06-04 09:03:192017金鸡报晓
日期:2017-01-10 15:19:56极客徽章
日期:2016-12-07 14:03:402015年迎新春徽章
日期:2015-03-04 09:50:28技术图书徽章
日期:2018-09-13 11:26:01
10 [报告]
发表于 2009-12-04 16:59 |只看该作者
必须要收藏啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP