当前位置:  操作系统/服务器>linux

Linux下实现SNMP一键安装的Shell脚本

    来源: 互联网  发布时间:2014-10-17

    本文导语:  Net-SNMP是一个免费的、开放源码的SNMP实现,以前称为UCD-SNMP。SNMP 很多都用其安装之后,作为监控宝和阿里云的系统信息监控使用。下面就来分享linux下实现SNMP一键安装的shell脚本: #!/usr/bin/env bash export LC_ALL=C if [ "$(id -u)" != ...

Net-SNMP是一个免费的、开放源码的SNMP实现,以前称为UCD-SNMP。SNMP 很多都用其安装之后,作为监控宝和阿里云的系统信息监控使用。下面就来分享linux下实现SNMP一键安装的shell脚本:

#!/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 > /usr/local/snmp/share/snmp/snmpd.conf >/var/net-snmp/snmpd.conf
#   cat >> /var/net-snmp/snmpd.conf &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

    
 
 

您可能感兴趣的文章:

  • 装了linux后,一键还原就不能用了,怎么回事?
  • Linux版一键清理系统垃圾文件
  • 请问在 LINUX下如何编辑脚本(可以直接运行脚本访问WINDOW系统)
  • 如何传递参数给linux shell 脚本(当脚本从标准输入而不是从文件获取时)
  • 关于arm linux下的别名配置脚本如何在进入用户时让shell执行的问题,如bashrc,profile,.bash_profile等脚本,寻求高手解答
  • Linux下如何编写脚本文件
  • 关于linux的脚本运行。。。求高人指点
  • linux重新启动后自动运行脚本程序
  • 谁能简单介绍一下LINUX上的各种语言脚本的功能.
  • linux shell脚本
  • 请问关于linux脚本的一个问题。
  • LINUX的系统管理脚本
  • Linux脚本
  • linux脚本中命令运行结果判断
  • 如何在linux下实现event事件机制 iis7站长之家
  • window下通过ftp执行linux脚本?
  • 如何在Linux下使用脚本实现程序的自动重启!望各位详解!
  • 求linux下定时重启服务的脚本
  • linux shell脚本无法改变环境变量
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • 求助:Linux 脚本如何提取MAC地址
  • 请教斑竹,在linux下怎么执行位于其他机器上的脚本
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下通过crond实现自动执行程序
  • Linux和Unix相对WIN、NETWARE有什么好处?他们之间有什么区别?WIN、NETWARE能实现的功能LINUX和UNIX能实现吗?
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • linux下如实现与window下的驱动器实现文件共享??
  • Linux内存文件系统(ramdisk)的三种实现方式
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • linux内存文件系统ramfs实现原理
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • Linux 共享内存介绍及实现代码
  • 我需要一个模型,在 LINUX C 下。实现线程间的控制,执行,阻塞,再执行。。。。。不知道如何实现。
  • linux下grep命令实现查找多个关键字(与关系和或关系)
  • 我想做linux下的还原备份,实现与还原精灵虚拟还原等一样的功能,应该怎么做?另外现在有实现这种功能的成熟产品是哪一种?
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 关于linux c程序实现自动实现telnet的问题
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 请问高手linux中用md5来实现一串字符串的加密,用c++/c实现
  • 在linux实现在任意给定的目录查找文需要的件的程序? 下面的实现思路可不可以呢????
  • 请问:有没有人在Linux下实现过计费网关?
  • 关于XP系统下批处理文件如何实现执行linux下脚本,从而实现版本的自动化编译
  • 如何在linux下实现event事件机制
  • Linux音频, Linux下能否实现 实时语音聊天 ?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3