Net-SNMP是一个免费的、开放源码的SNMP实现,以前称为UCD-SNMP。SNMP 很多都用其安装之后,作为监控宝和阿里云的系统信息监控使用。下面就来分享linux下实现SNMP一键安装的shell脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | #!/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 |