zoukankan      html  css  js  c++  java
  • linux监控脚本

    1,snmp安装脚本for ubuntu/CentOS

    #!/usr/bin/env bash
     export LC_ALL=C
     if [ "$(id -u)" != "0" ]
     then
      echo "This script. must be run as root" 1>&2
      exit 1
     fi
    ####check if gcc perl perl-devel(centos) or libperl-dev(ubuntu) exists,  
      APT_CMD=`whereis apt-get|awk '{print $2}'`
      YUM_CMD=`whereis yum|awk '{print $2}'`
      if [ "$APT_CMD"x != ""x ]
      then
        echo "$APT_CMD"
        cmd=`dpkg -l|grep gcc`
        if [ "$cmd"x = ""x ]
        then
          apt-get install -y gcc 
        fi
        cmd=`dpkg -l|grep perl`
        if [ "$cmd"x = ""x ]
        then
          apt-get install -y perl 
        fi
        cmd=`dpkg -l|grep "libperl-dev"`
        if [ "$cmd"x = ""x ]
        then
          apt-get install -y libperl-dev 
        fi
      elif [ "$YUM_CMD"x != ""x ]
      then
       echo $YUM_CMD
       cmd=`rpm -q gcc|grep -v "not installed"`
       if [ "$cmd"x = ""x ]
       then
         yum install gcc -y 1>/dev/null 2>&1
       fi
       cmd=`rpm -q perl|grep -v "not installed"`
       if [ "$cmd"x = ""x ]
       then
         yum install -y perl 1>/dev/null 2>&1
       fi
       cmd=`rpm -q perl-devel|grep -v "not installed"`
       if [ "$cmd"x = ""x ]
       then
         yum install -y perl-devel 1>/devel/null 2>&1
       fi
      else
       echo "your release have no yum or apt-get"
      fi
     function Usage()
     {
        echo "用法如下:(注意:2c版本密码必须大于6位,3版本密码必须大于8位)";
        echo ""
        echo "  $0 -v 版本号(2代表2C,3代表版本3) -u 用户名 -p 密码";
        echo "  $0 -v [2|3] -u username -p password";
        echo "";
        exit 0;
     }
     if [ $# -lt 1 ]
     then
       echo "请输入参数"
       Usage
     fi
    #####get parameters
      version=0
      username=""
      password=""
      while getopts ":v:u:p:" opt;
      do
        case $opt in
        v)
          version=$OPTARG
          if [[ ${OPTARG:0:1} = "-" ]]
          then
            echo ""
            echo "-v need argument"
            echo ""
            Usage
          fi
        ;;
        u)
          username=$OPTARG
          if [[ ${OPTARG:0:1} = "-" ]]
          then
            echo ""
            echo "-u need argument"
            echo ""
            Usage
          fi
        ;;
        p)
          password=$OPTARG
          if [[ ${OPTARG:0:1} = "-" ]]
          then
            echo ""
            echo "-p need argument"
            echo ""
            Usage
          fi
        ;;
        :)
          Usage
        ;;
        ?) 
          paralist=-1;
          Usage
        ;;
        esac
      done  
    ###check version number, must be 2 or 3
     if [ $version -ne "3" -a $version -ne "2" ]
     then
      Usage
      exit 3
     fi
     if [ $version -eq "3" -a "$username"x = ""x ]
     then
       echo "版本3必须要输入用户名"
       Usage
     fi
    ###check password length, version 3 big then 8, version 2 big then 6
     if [ "$version" -eq "3" ] 
     then
       if [ ${#password} -lt "8" ]
       then
         echo ""
         echo "Your passwords must greater than 8 bytes" 1>&2
         echo ""
         Usage
       fi
     else     ########### version = 2
       if [ ${#password} -lt "6" ]
       then
         echo ""
         echo "Your passwords must greater than 6 bytes" 1>&2
         echo ""
         Usage
       fi
     fi
      wget http://download.cloud.360.cn/yjk/net-snmp.tar.gz
      tar zxvf net-snmp.tar.gz
      cd net-snmp-5.7.2
      ./configure --prefix=/usr/local/snmp --with-mib-modules=ucd-snmp/diskio 
    -enable-mfd-rewrites --with-default-snmp-version="$version" --with-sys-contact="@@no.where" 
    --with-sys-location="Unknown" --with-logfile="/var/log/snmpd.log" 
    --with-persistent-directory="/var/net-snmp"
      make
      make install
      case $version in
       2)
       cat >> /usr/local/snmp/share/snmp/snmpd.conf << EOF
    rocommunity $password 101.199.100.150
    rocommunity $password 220.181.150.98
    rocommunity $password 180.153.229.230
    rocommunity $password 220.181.150.125
    rocommunity $password 103.28.10.223
    EOF
       ;;
       3)
       cat >> /usr/local/snmp/share/snmp/snmpd.conf << EOF
    rouser $username auth
    EOF
    #   echo "createUser $2 MD5 $3" >>/var/net-snmp/snmpd.conf
    #   cat >> /var/net-snmp/snmpd.conf << EOF
    #createUser $2 MD5 $3
    #EOF
       ;;
       *)
       echo "Please check your input version" 1>&2
       echo
       exit 1
       ;;
      esac
     i=0
     while [ $i -lt 5 ]
     do
       ret=`/usr/local/snmp/sbin/snmpd`
       ret=`ps aux | grep -v grep | grep snmp`
       if [ "$ret"x = ""x ]
       then
         ((i=i+1))
         ret=`/usr/local/snmp/sbin/snmpd`
       else
         break
       fi
     done
     case $version in
     3)
       echo "createUser $username MD5 $password" >>/var/net-snmp/snmpd.conf
     ;;
     esac
     pid=`ps -ef|grep snmpd|grep -v grep|awk '{print $2}'`
     echo "pid: $pid"
     if [ "$pid"x != ""x ]
     then 
       kill -9 $pid
       /usr/local/snmp/sbin/snmpd
     else
       /usr/local/snmp/sbin/snmpd
     fi   
     case $version in
     3)
       cmd=`cat /var/net-snmp/snmpd.conf|grep "$username"`
       if [ "$cmd"x == ""x ]
       then
         pid=`ps -ef|grep snmpd|grep -v grep|awk '{print $2}'`
         if [ "$pid"x != ""x ]
         then
           kill -9 $pid
           echo "createUser $username MD5 $password" >>/var/net-snmp/snmpd.conf
         fi
       fi
     ;;
     esac
     ret=`ps -ef | grep -v grep | grep snmp`
     if [ "$ret"x != ""x ]
     then
      echo "snmp start success"
      echo
     else
      echo "snmp start failed"
      echo
      exit 4
     fi
     echo "Finish..."
     echo
     exit 0
    View Code
  • 相关阅读:
    Java Native Method
    SQL语句优化
    Ibatis的环境搭建以及遇到的问题解决
    Java 构建器
    SpringMVC自定义视图 Excel视图和PDF视图
    java 枚举的常见使用方法
    mysql 根据某些字段之和排序
    MFC The Screen Flickers When The Image Zoomed
    How To Debug Qmake Pro File
    Gcc And MakeFile Level1
  • 原文地址:https://www.cnblogs.com/ruiy/p/4418447.html
Copyright © 2011-2022 走看看