1. #!/bin/bash
  2. # Author: Joshua Chen
  3. # Date: Jun
  4. # Location: Shenzhen
  5.  
  6. #. 解读这两个程序是因为程序中包含了大部分shell脚本的基本语法;
  7. #. 省去以后需要使用到shell脚本的时候,需要参考的需求;
  8. #. 在本代码中,以24位掩码为基准,如果IP为: 10.1.1.7,那么前面三位数是网络位: 10.1.,最后一位是主机位:
  9. # -- 晴 深圳 曾剑锋
  10.  
  11. # Description: allocate IPs to students
  12.  
  13. #每个人分配一个主IP, 3个辅助IP
  14. EXTRA_COUNT=
  15. #IP的前缀,相当这个脚本用于分配10..1段的IP,也就是网络位
  16. IP_PREFIX=10.1.
  17. #最多分配50个主IP
  18. MAX_GRP=
  19. #主IP的主机位从11开始
  20. PRIM_MIN=
  21. #主IP的主机位最大值
  22. PRIM_MAX=$((PRIM_MIN + MAX_GRP -))
  23. #扩展IP的主机位最小值
  24. EXTRA_MIN=$((PRIM_MAX + ))
  25. #扩展IP的主机位最大值
  26. #EXTRA_MAX=$((EXTRA_MIN + MAX_GRP * EXTRA_COUNT -))
  27.  
  28. #获取传入的第一个参数,如果文件不存在,那个就退出,
  29. #并且打印出命令的使用方法.
  30. list=$
  31. if [ ! -e "$list" ];then
  32. #输出到标准错误输出
  33. echo "Can not locate list file '$list'" >&
  34. #需要传入有学生姓名的文件,每个学生名字占一行
  35. echo "Usage: $(basename $0) <name list>"
  36. exit
  37. fi
  38.  
  39. #检查list路径下文件的行数是否大于MAX_GRP,以下提供2种写法
  40. #if [ $(wc -l "$list" | cut -d " " -f1) -gt "$MAX_GRP" ];then
  41. if [ $(wc -l < "$list") -gt "$MAX_GRP" ];then
  42. echo "Too many entries in the name list! maximum $MAX_GRP is allowed" >&
  43. exit
  44. fi
  45.  
  46. #分配主IP
  47. #每次从list代表的文件中读取一行名字,保存在name的变量中,
  48. #然后是用printf组合分配IP.
  49. echo "------- Primary IP -------"
  50. n=$PRIM_MIN
  51. while read name
  52. do
  53. printf "%s.%-3s %s\n" "${IP_PREFIX}" $n "$name"
  54. ((n++)) #语法要求,这样就可以像写C一样
  55. done < "$list"
  56.  
  57. #分配辅助IP
  58. #因为辅助IP这里需要分配3个,所以while里面再是用for循环
  59. #对IP进行分配.
  60. echo
  61. echo "------- Extra IP -------"
  62. n=$EXTRA_MIN
  63. while read name
  64. do
  65. for i in $(seq $EXTRA_COUNT) #seq用于产生序列供for循环使用
  66. do
  67. printf "%s.%-3s %s\n" "${IP_PREFIX}" $n "$name"
  68. ((n++))
  69. done
  70. done < "$list"
  71.  
  72. #退出程序
  73. exit
  74.  
  75. # Description: detect the ethernet link state
  76.  
  77. #网卡设备所在的目录
  78. dir=/sys/class/net
  79. #文件名carrier
  80. file=carrier
  81.  
  82. # need root privilege
  83. if [ "$UID" -ne ]; then
  84. echo "Must be root"
  85. exit
  86. fi
  87.  
  88. if [ ! -d $dir ];then
  89. echo "Directory $dir doesn't exist, quit."
  90. exit
  91. fi
  92.  
  93. cd $dir
  94.  
  95. # do we have an NIC? #Network Interface Card
  96. if ! ls | grep -q ^eth; then
  97. echo "No NIC detected"
  98. exit
  99. fi
  100.  
  101. # check the status of each NIC
  102. ls | grep ^eth | while read dev
  103. do
  104. # take it up first
  105. ifconfig $dev up &> /dev/null
  106.  
  107. # if the file is not found and put error to /dev/null
  108. if [ "$(cat $dev/$file 2>/dev/null)" = "" ];then
  109. echo "$dev: link ok"
  110. else
  111. echo "$dev: no link"
  112. fi
  113. done
  114.  
  115. exit

ipAllocate_and_linkState_hacking的更多相关文章

随机推荐

  1. shell 脚本拼接

    var21=`echo $vvar|awk -F ',' '{print $1}'` echo $var21 var31=`echo $var21|awk -F ':' '{print $2}'` e ...

  2. Eclipse如何快速改变主题颜色

    厌倦了Eclipse的白底黑子,我们来更换下Eclipse的主题颜色,让眼睛更舒服一点 首先先进入网址:http://eclipsecolorthemes.org/ 选择一个主题进入,点击进入如下: ...

  3. ZC_C++类函数指针_模拟_Delphi类函数指针_Qt例子

    qt-opensource-windows-x86-msvc2010_opengl-5.3.2.exe ZC: “const QString” 作传入参数的时候,不太会弄... 貌似 还是在进行构建等 ...

  4. Codeforces 559B - Equivalent Strings

    559B - Equivalent Strings 思路:字符串处理,分治 不要用substr(),会超时 AC代码: #include<bits/stdc++.h> #include&l ...

  5. 【Android】查看包名和首启动activity

    工具:aapt 位置:$ANDROID_HOME/build-tools/版本号/aapt 需要配置环境变量才能使用 aapt dump badging XXXapk 输出信息中重要的有: packa ...

  6. JPA、SpringData JPA 、Hibernate和Mybatis 的区别和联系

    一.JPA 概述 1. Java Persistence API(Java 持久层 API):用于对象持久化的 API 2. 作用:使得应用程序以统一的方式访问持久层 3. 前言中提到了 Hibern ...

  7. yii CComponent组件 实例说明1

    yii CComponent组件 实例说明 yii中的module,controller都是CComponent的子类,可以说yii的架构基石就是依托在CCompnent基础上的,这里研究下CComp ...

  8. 探索gff/gtf格式

    参考: GFF格式说明 Generic Feature Format Version 3 (GFF3) 先下载一个 gtf 文件浏览一下 1 havana gene 11869 14409 . + . ...

  9. Vue.js 渲染函数, JSX(未掌握,未学完)

    渲染函数 , JSX(没完成学习) 基础: 实例属性:vm.$slots default 属性包括了所有没有被包含在具名插槽中的节点. 渲染函数: render: function(createEle ...

  10. hdoj3652 B-number

    题意:给出n,问1-n中有13且能整除13的数数量. 就是hd3555和codeforces beautiful number的合成版.dp记录待填长度,是否带有13,前面数的模13余数,前一个数是k ...