360的snmp shell 安装脚本

Posted on Posted in bash
Tips: 本文创建于2016年6月15日,已超过 2 年,内容或图片可能已经失效!

大企业的东西,666

> code

  1. #!/usr/bin/env bash  
  2.   
  3. # Copyright @ qihoo360  
  4.   
  5.   export LC_ALL=C  
  6.   
  7.   if [ "$(id -u)" != "0" ]  
  8.   then  
  9.     echo "This script. must be run as root" 1>&2  
  10.     exit 1  
  11.   fi  
  12.    
  13. ####check if gcc perl perl-devel(centos) or libperl-dev(ubuntu) exists,     
  14.    APT_CMD=`whereis apt-get|awk '{print $2}'`  
  15.    YUM_CMD=`whereis yum|awk '{print $2}'`  
  16.    if [ "$APT_CMD"x != ""x ]  
  17.    then  
  18. #       echo "$APT_CMD"  
  19.        cmd=`dpkg -l|grep gcc`  
  20.        if [ "$cmd"x = ""x ]  
  21.        then  
  22.            apt-get install -y gcc   
  23.        fi  
  24.        cmd=`dpkg -l|grep perl`  
  25.        if [ "$cmd"x = ""x ]  
  26.        then  
  27.            apt-get install -y perl   
  28.        fi  
  29.        cmd=`dpkg -l|grep "libperl-dev"`  
  30.        if [ "$cmd"x = ""x ]  
  31.        then  
  32.            apt-get install -y  libperl-dev   
  33.        fi  
  34.    elif [ "$YUM_CMD"x != ""x ]  
  35.    then  
  36. #      echo $YUM_CMD  
  37.       cmd=`rpm -q gcc|grep -v "not installed"`  
  38.       if [ "$cmd"x = ""x ]  
  39.       then  
  40.           yum install gcc -y 1>/dev/null 2>&1  
  41.       fi  
  42.       cmd=`rpm -q perl|grep -v "not installed"`  
  43.       if [ "$cmd"x = ""x ]  
  44.       then  
  45.           yum install -y perl 1>/dev/null 2>&1  
  46.       fi  
  47.       cmd=`rpm -q perl-devel|grep -v "not installed"`  
  48.       if [ "$cmd"x = ""x ]  
  49.       then  
  50.           yum install -y perl-devel 1>/dev/null 2>&1  
  51.       fi  
  52.    else  
  53.       echo "your release have no yum or apt-get"  
  54.    fi  
  55.      
  56.   function Usage()  
  57.   {  
  58.  
          echo "用法如下:(注意:2c版本密码必须大于6位,3版本密码必须大于8位), 对于3版本,需要指定一个加密类型,MD5或者SHA";  
  59.        echo ""  
  60.        echo "    $0 -v 版本号(2代表2C,3代表版本3) -u 用户名 -p 密码 [-t 加密类型]";  
  61.        echo "    $0 -v 2 -u username -p password        //2c版本";      
  62.        echo "    $0 -v 3 -u username -p password -t [MD5|SHA]   //3版本";  
  63.        echo "";  
  64.        exit 0;  
  65.   }  
  66.     
  67.   if [ $# -lt 1 ]  
  68.   then  
  69.       echo "请输入参数"  
  70.       Usage  
  71.   fi  
  72.     
  73. #####get parameters  
  74.    version=0  
  75.    username=""  
  76.    password=""  
  77.    encrytype=""  
  78.   
  79.    while getopts ":v:u:p:t:"  opt;  
  80.    do  
  81.        case $opt in  
  82.        v)  
  83.             version=$OPTARG  
  84.             if [[ ${OPTARG:0:1} = "-" ]]  
  85.             then  
  86.                 echo ""  
  87.                 echo "-v need argument"  
  88.                 echo ""  
  89.                 Usage  
  90.             fi  
  91.        ;;  
  92.        u)  
  93.             username=$OPTARG  
  94.             if [[ ${OPTARG:0:1} = "-" ]]  
  95.             then  
  96.                 echo ""  
  97.                 echo "-u need argument"  
  98.                 echo ""  
  99.                 Usage  
  100.             fi  
  101.        ;;  
  102.        p)  
  103.             password=$OPTARG  
  104.             if [[ ${OPTARG:0:1} = "-" ]]  
  105.             then  
  106.                 echo ""  
  107.                 echo "-p need argument"  
  108.                 echo ""  
  109.                 Usage  
  110.             fi  
  111.        ;;  
  112.        t)  
  113.         encrytype=$OPTARG  
  114.         if [[ ${OPTARG:0:1} = "-" ]]  
  115.             then  
  116.         echo ""  
  117.         echo "-t need argument"  
  118.         echo ""  
  119.         Usage  
  120.         fi  
  121.        ;;  
  122.        🙂  
  123.             Usage  
  124.        ;;  
  125.        ?)  
  126.             paralist=-1;  
  127.             Usage  
  128.        ;;  
  129.        esac  
  130.    done     
  131.   
  132. ###check version number, must be 2 or 3  
  133.   if [ $version -ne "3" -a $version -ne "2" ]  
  134.   then  
  135.     Usage  
  136.     exit 3  
  137.   fi  
  138.     
  139.   if [ $version -eq "3" -a  "$username"x = ""x ]  
  140.   then  
  141.      echo "版本3必须要输入用户名"  
  142.      Usage  
  143.   fi  
  144.   
  145. ###check password length, version 3 big then 8, version 2 big then 6  
  146.   if [ "$version" -eq "3" ]   
  147.   then  
  148.       if [ ${#password} -lt "8" ]  
  149.       then  
  150.           echo ""  
  151.           echo "Your passwords must greater than 8 bytes" 1>&2  
  152.           echo ""  
  153.           Usage  
  154.       fi  
  155.   else          ########### version = 2  
  156.       if [ ${#password} -lt "6" ]  
  157.       then  
  158.           echo ""  
  159.           echo "Your passwords must greater than 6 bytes" 1>&2  
  160.           echo ""  
  161.           Usage  
  162.       fi  
  163.   fi  
  164.      
  165.    if [ "$version" -eq "3" ]  
  166.    then  
  167.     if [ "$encrytype"x = ""x ]  
  168.         then  
  169.         encrytype="MD5"  
  170.         elif [ "$encrytype" != "MD5" -a "$encrytype" != "SHA" ]  
  171.     then  
  172.         echo "加密类型必须为MD5或者SHA"  < /span>
  173.         Usage  
  174.     fi  
  175.    fi  
  176.      
  177.    TAR_TARGET="net-snmp.tar.gz"  
  178.    if [ -e $TAR_TARGET ]  
  179.    then  
  180.       cmd=`rm -rf $TAR_TARGET 1>/dev/null 2>&1`   
  181.    fi  
  182.    echo "starting ...(wait for 10 minute)"  
  183.    cmd=`wget http://download.cloud.360.cn/yjk/net-snmp.tar.gz 1>/dev/null 2>&1`  
  184.    if [ -e $TAR_TARGET ]  
  185.    then  
  186.        cmd=`tar zxvf $TAR_TARGET`  
  187.    else   
  188.        echo "download net-snmp.tar.gz failed"  
  189.        exit  
  190.    fi  
  191.   
  192.    cd net-snmp-5.7.2  
  193.    cmd=`./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" 1>/dev/null`  
  194.    cmd=`make 1>/dev/null`  
  195.    cmd=`make install 1>/dev/null`  
  196.   
  197.    case $version in  
  198.      2)  
  199.      cat >> /usr/local/snmp/share/snmp/snmpd.conf << EOF  
  200. rocommunity $password 101.199.100.150  
  201. rocommunity $password 220.181.150.98  
  202. rocommunity $password 180.153.229.230  
  203. rocommunity $password 220.181.150.125  
  204. rocommunity $password 103.28.11.237  
  205. rocommunity $password 103.28.10.244  
  206. rocommunity $password 103.28.10.245  
  207.   
  208. EOF  
  209.      ;;  
  210.      3)  
  211.         cat >> /usr/local/snmp/share/snmp/snmpd.conf << EOF  
  212.     rouser $username auth  
  213. EOF  
  214.        
  215.      ;;  
  216.      *)  
  217.      echo "Please check your input version" 1>&2  
  218.      echo  
  219.      exit 1  
  220.      ;;  
  221.    esac  
  222.   
  223.   i=0  
  224.   while [ $i -lt 5 ]  
  225.   do  
  226.       ret=`/usr/local/snmp/sbin/snmpd`  
  227.       ret=`ps aux | grep -v grep | grep snmp`  
  228.       if [ "$ret"x = ""x ]  
  229.       then  
  230.           ((i=i+1))  
  231.           ret=`/usr/local/snmp/sbin/snmpd`  
  232.       else  
  233.           break  
  234.       fi  
  235.   done  
  236.     
  237.   case $version in  
  238.   3)  
  239. #      echo "createUser $username MD5 $password" >>/var/net-snmp/snmpd.conf  
  240.       echo "createUser $username $encrytype $password" >>/var/net-snmp/snmpd.conf  
  241.   ;;  
  242.   esac  
  243.     
  244.   pid=`ps -ef|grep snmpd|grep -v grep|awk '{print $2}'`  
  245.   echo "pid: $pid"  
  246.   if [ "$pid"x != ""x ]  
  247.   then   
  248.       kill -9 $pid  
  249.       /usr/local/snmp/sbin/snmpd  
  250.   else  
  251.       /usr/local/snmp/sbin/snmpd  
  252.   fi       
  253.     
  254.   case $version in  
  255.   3)  
  256.       cmd=`cat /var/net-snmp/snmpd.conf|grep "$username"`  
  257.       if [ "$cmd"x == ""x ]  
  258.       then  
  259.           pid=`ps -ef|grep snmpd|grep -v grep|awk '{print $2}'`  
  260.           if [ "$pid"x != ""x ]  
  261.           then  
  262.               kill -9 $pid  
  263.               echo "createUser $username $encrytype $password" >>/var/net-snmp/snmpd.conf  
  264.           fi  
  265.       fi  
  266.   ;;  
  267.   esac  
  268.    
  269.   ret=`ps -ef | grep -v grep | grep snmp`  
  270.   if [ "$ret"x != ""x ]  
  271.   then  
  272.     echo "snmp start success"  
  273.     echo  
  274.   else  
  275.     echo "snmp start failed"  
  276.     echo  
  277.     exit 4  
  278.   fi  
  279.    
  280.   echo "/usr/local/snmp/sbin/snmpd" >>/etc/rc.local  
  281.   
  282.   echo "Finish..."  
  283.   echo  
  284.   exit 0  
» 转载请注明来源:若我若鱼 » 360的snmp shell 安装脚本

Leave a Reply

Your email address will not be published. Required fields are marked *

20 + 14 =