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

 

你可能感兴趣的:(linux)