免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4506 | 回复: 4
打印 上一主题 下一主题

vmps服务器批量添加MAC地址。。【原创】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-11 16:10 |只看该作者 |倒序浏览
本帖最后由 jiang5feng 于 2011-01-11 16:24 编辑

公司搭建vmps服务器,为了管理方便写了个脚本来添加MAC地址到配置文件,分享给大家。

转帖请注明出处

这个是添加单个MAC地址的
  1. 一、包含文件说明
  2.     1、(addmac.sh) 为添加MAC脚本。
  3.     2、(reserv.sh) 为重启VMPS服务脚本。
  4.     3、(vlanname) 为网络中存在的vlanname列表。
  5.     4、(vmpsd.log)为添加MAC输出LOG。
  6.     5、(volumelis)为批量添加MAC列表。
  7.     6、(volumeadd.sh)为批量添加MAC脚本。
  8. 二、使用说明
  9.     1、单MAC地址添加使用./addmac.sh
  10.     # 查看使用说明
  11.     2、批量加添使用./volumeadd.sh
  12.     # 注意volumeadd列表格式:XX-XX-XX-XX vlanname zhushi
复制代码
正文
  1. #!/bin/bash
  2. ########################################
  3. # The:        JiangFeng.Cai
  4. # From:        *****mi*****
  5. # date:        2010-12-16
  6. # Thanks
  7. ########################################
  8. echo '***************************************'
  9. echo '1.This script is add MAC to vmpsd server.'
  10. echo '2.Log name vmpsd.log.'
  11. echo '3.Reserved vlans name list ./vlanname.'
  12. echo '4.Backup dir ./vlanbackup.'
  13. echo '***************************************'
  14. echo "uasge:    $0 <macaddree> <vlanname> <xingming>"
  15. echo 'MACadd format:       ****.****.****'
  16. echo '***************************************'
  17. echo ''


  18. check ()         {
  19. echo ${mac} |grep -q '\w\{4,\}.\w\{4,\}.\w\{4,\}'

  20. if [ ! $? -eq 0 ];then
  21.         echo '#################################'
  22.         echo 'Enter error MAC!!'
  23.         echo 'MACadd format:        ****.****.****'
  24.         echo '#################################'
  25.         exit 1
  26. fi

  27. cat ${vlandb_data}|grep -q ${mac}

  28. if [ $? -eq 0 ];then
  29.         echo '###############################'
  30.         echo '#        Input MACadd exist!'       
  31.         echo '###############################'
  32.         echo ''
  33.         exit 2
  34. fi

  35. [ -f ${path}/vlanname ] || touch ${path}/vlanname

  36. cat ${path}/vlanname | grep -q ${vlanname}

  37. if [ ! $? -eq 0 ];then
  38.         echo '#######################'
  39.         echo 'vlanname not exist!!'
  40.         echo 'Format:        vlanname1'
  41.         echo '        vlanname2'
  42.         echo '        vlanname{n}'
  43.         echo 'Reserved vlans name:'
  44.         cat ${path}/vlanname
  45.         echo '#######################'
  46.         exit 3
  47. fi
  48.                 }

  49. # addmac
  50. addmac ()        {

  51. [ -d ${vlanbackup} ] || mkdir ${vlanbackup}

  52. cd ${vlandb_path}

  53. tar -czf ${vlanbackup}/vlandb${backtime}.tar.gz vlan.db

  54. cd ${path}
  55. if [ ${var} -eq 2 ];then
  56.         sed 23a\ "address ${mac} vlan-name ${vlanname}" ${vlandb_data} > ${path}/vlan.db
  57. fi
  58. if [ ${var} -eq 3 ];then
  59.         sed 23a\ "address ${mac} vlan-name ${vlanname}" ${vlandb_data}|sed 23a\ "!        ${xingming}" >  ${path}/vlan.db
  60. fi
  61. rm -rf ${vlandb_data}

  62. mv  ${path}/vlan.db ${vlandb_path}
  63. echo "!-------------------${xingming}----------------" >> ${vmpsdlog}
  64. echo "${backuptime}"        >> ${vmpsdlog}
  65. echo "address ${mac} vlan-name ${vlanname}" >> ${vmpsdlog}
  66. echo ''
  67. }
  68. # restart vmpsd service
  69. revmpsd ()         {
  70. ${vmpsd}
  71. kill -9 ${vmpsdid}
  72. ${vmpsd}

  73.                 }


  74. # ok let's begin {

  75. #set variable
  76. mac=$1
  77. var=$#
  78. vlanname=$2
  79. xingming=$3
  80. path=`pwd`
  81. vmpsd=/usr/local/bin/vmpsd
  82. vmpsdlog=${path}/vmpsd.log
  83. vmpsdid=`ps aux|grep vmps|grep -v 'grep'|awk '{print $2}'`
  84. backtime=`date +%Y-%m-%d-%H%M%S`
  85. vlanbackup=${path}/vlanbackup
  86. vlandb_path=/usr/local/etc/
  87. vlandb_data=/usr/local/etc/vlan.db
  88. # check variable
  89. if [ $# -eq 0 ];then
  90.         echo '####################################'
  91.         echo 'Error enter!!!'
  92.         echo "uasge:        $0 <macaddree> <vlanname> <xingming>"
  93.         echo 'MACadd format:       ****.****.****'
  94.         echo '####################################'
  95.         exit 100
  96. fi
  97. # runing check input
  98. check

  99. # runing addmac
  100. addmac

  101. # runing revmpsd service
  102. revmpsd

  103. if [ $? -eq 0 ];then
  104.         echo '**************************'
  105.         echo 'Address MAC done.'
  106.         echo "MAC:        ${mac}"
  107.         echo "Vlanname:        ${vlanname}"
  108.         echo '**************************'
  109. fi

  110. #The end         }
复制代码
这个是批量添加MAC地址的。
  1. #!/bin/bash
  2. ###########################
  3. #The:JiangFeng.Cai
  4. #Date:2010-12-16
  5. #From:*************
  6. ###########################
  7. path=`pwd`
  8. i=1
  9. vo=${path}/volumelis
  10. vo1=${path}/volume1
  11. vo2=${path}/volume2
  12. vlanconf=/usr/local/etc/vlan.db

  13. [ -f ${vo} ] || touch ${vo}

  14. dos2unix ${path}/volumeadd

  15. sed -e 's/$//g' -e '/-/'d -e 's/\t/ /g' -e 'y/ABCDEF/abcdef/' -e 's/$//g' -e 's/\(....\)\(....\)\(....\)/\1.\2.\3/' ${vo} > ${vo1}
  16. hs=`sed -n '$=' ${vo1}`
  17. if [ $? -eq 0 ];then
  18.         while [ ${i} -le ${hs} ]
  19.                 do
  20.                         mac=`sed -n ${i}p ${vo1}|awk '{print $1}'`
  21.                         vlan=`sed -n ${i}p ${vo1}|awk '{print $2}'`
  22.                         xingming=`sed -n ${i}p ${vo1}|awk '{print $3}'`
  23.                         ./addmac.sh ${mac} ${vlan} ${xingming}
  24.                         echo ${i}
  25.                         ((i++))
  26.         done
  27.         rm -fr ${path}/${vo1}
  28. fi
  29. dos2unix ${vlanconf}
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-01-11 16:42 |只看该作者
粗略看了一下,风格还行,函数的花括号的位置改下会更好看。。。

还有就是第一个脚本中的Line 45:
if [ ! $? -eq 0 ];then
为啥不写成下面这样呢
if [ $? -ne 0 ];then
或者
if [ $? ];then

写成if [ ! $? -eq 0 ];then的目的是什么

论坛徽章:
0
3 [报告]
发表于 2011-01-11 16:58 |只看该作者
粗略看了一下,风格还行,函数的花括号的位置改下会更好看。。。

还有就是第一个脚本中的Line 45:
if  ...
xiaopan3322 发表于 2011-01-11 16:42



    呵呵,就是习惯用[ ! $? -eq  0 ],这有什么弊端吗?要是有我就改正。

谢谢大侠点评。

论坛徽章:
0
4 [报告]
发表于 2011-01-11 17:03 |只看该作者
回复 3# jiang5feng


    没什么弊端,就是从逻辑上讲,很少有人这么来写,感觉就像把简单的事物搞复杂了……

论坛徽章:
0
5 [报告]
发表于 2011-01-11 17:11 |只看该作者
回复 4# xiaopan3322

都是刚学shell留下的毛病,那时几个运算符总是搞混,就在前面加!

以后在写,要简单、易读。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP