ipAllocate_and_linkState_hacking
- #!/bin/bash
- # Author: Joshua Chen
- # Date: Jun
- # Location: Shenzhen
- #. 解读这两个程序是因为程序中包含了大部分shell脚本的基本语法;
- #. 省去以后需要使用到shell脚本的时候,需要参考的需求;
- #. 在本代码中,以24位掩码为基准,如果IP为: 10.1.1.7,那么前面三位数是网络位: 10.1.,最后一位是主机位:
- # -- 晴 深圳 曾剑锋
- # Description: allocate IPs to students
- #每个人分配一个主IP, 3个辅助IP
- EXTRA_COUNT=
- #IP的前缀,相当这个脚本用于分配10..1段的IP,也就是网络位
- IP_PREFIX=10.1.
- #最多分配50个主IP
- MAX_GRP=
- #主IP的主机位从11开始
- PRIM_MIN=
- #主IP的主机位最大值
- PRIM_MAX=$((PRIM_MIN + MAX_GRP -))
- #扩展IP的主机位最小值
- EXTRA_MIN=$((PRIM_MAX + ))
- #扩展IP的主机位最大值
- #EXTRA_MAX=$((EXTRA_MIN + MAX_GRP * EXTRA_COUNT -))
- #获取传入的第一个参数,如果文件不存在,那个就退出,
- #并且打印出命令的使用方法.
- list=$
- if [ ! -e "$list" ];then
- #输出到标准错误输出
- echo "Can not locate list file '$list'" >&
- #需要传入有学生姓名的文件,每个学生名字占一行
- echo "Usage: $(basename $0) <name list>"
- exit
- fi
- #检查list路径下文件的行数是否大于MAX_GRP,以下提供2种写法
- #if [ $(wc -l "$list" | cut -d " " -f1) -gt "$MAX_GRP" ];then
- if [ $(wc -l < "$list") -gt "$MAX_GRP" ];then
- echo "Too many entries in the name list! maximum $MAX_GRP is allowed" >&
- exit
- fi
- #分配主IP
- #每次从list代表的文件中读取一行名字,保存在name的变量中,
- #然后是用printf组合分配IP.
- echo "------- Primary IP -------"
- n=$PRIM_MIN
- while read name
- do
- printf "%s.%-3s %s\n" "${IP_PREFIX}" $n "$name"
- ((n++)) #语法要求,这样就可以像写C一样
- done < "$list"
- #分配辅助IP
- #因为辅助IP这里需要分配3个,所以while里面再是用for循环
- #对IP进行分配.
- echo
- echo "------- Extra IP -------"
- n=$EXTRA_MIN
- while read name
- do
- for i in $(seq $EXTRA_COUNT) #seq用于产生序列供for循环使用
- do
- printf "%s.%-3s %s\n" "${IP_PREFIX}" $n "$name"
- ((n++))
- done
- done < "$list"
- #退出程序
- exit
- # Description: detect the ethernet link state
- #网卡设备所在的目录
- dir=/sys/class/net
- #文件名carrier
- file=carrier
- # need root privilege
- if [ "$UID" -ne ]; then
- echo "Must be root"
- exit
- fi
- if [ ! -d $dir ];then
- echo "Directory $dir doesn't exist, quit."
- exit
- fi
- cd $dir
- # do we have an NIC? #Network Interface Card
- if ! ls | grep -q ^eth; then
- echo "No NIC detected"
- exit
- fi
- # check the status of each NIC
- ls | grep ^eth | while read dev
- do
- # take it up first
- ifconfig $dev up &> /dev/null
- # if the file is not found and put error to /dev/null
- if [ "$(cat $dev/$file 2>/dev/null)" = "" ];then
- echo "$dev: link ok"
- else
- echo "$dev: no link"
- fi
- done
- exit
ipAllocate_and_linkState_hacking的更多相关文章
随机推荐
- shell 脚本拼接
var21=`echo $vvar|awk -F ',' '{print $1}'` echo $var21 var31=`echo $var21|awk -F ':' '{print $2}'` e ...
- Eclipse如何快速改变主题颜色
厌倦了Eclipse的白底黑子,我们来更换下Eclipse的主题颜色,让眼睛更舒服一点 首先先进入网址:http://eclipsecolorthemes.org/ 选择一个主题进入,点击进入如下: ...
- ZC_C++类函数指针_模拟_Delphi类函数指针_Qt例子
qt-opensource-windows-x86-msvc2010_opengl-5.3.2.exe ZC: “const QString” 作传入参数的时候,不太会弄... 貌似 还是在进行构建等 ...
- Codeforces 559B - Equivalent Strings
559B - Equivalent Strings 思路:字符串处理,分治 不要用substr(),会超时 AC代码: #include<bits/stdc++.h> #include&l ...
- 【Android】查看包名和首启动activity
工具:aapt 位置:$ANDROID_HOME/build-tools/版本号/aapt 需要配置环境变量才能使用 aapt dump badging XXXapk 输出信息中重要的有: packa ...
- JPA、SpringData JPA 、Hibernate和Mybatis 的区别和联系
一.JPA 概述 1. Java Persistence API(Java 持久层 API):用于对象持久化的 API 2. 作用:使得应用程序以统一的方式访问持久层 3. 前言中提到了 Hibern ...
- yii CComponent组件 实例说明1
yii CComponent组件 实例说明 yii中的module,controller都是CComponent的子类,可以说yii的架构基石就是依托在CCompnent基础上的,这里研究下CComp ...
- 探索gff/gtf格式
参考: GFF格式说明 Generic Feature Format Version 3 (GFF3) 先下载一个 gtf 文件浏览一下 1 havana gene 11869 14409 . + . ...
- Vue.js 渲染函数, JSX(未掌握,未学完)
渲染函数 , JSX(没完成学习) 基础: 实例属性:vm.$slots default 属性包括了所有没有被包含在具名插槽中的节点. 渲染函数: render: function(createEle ...
- hdoj3652 B-number
题意:给出n,问1-n中有13且能整除13的数数量. 就是hd3555和codeforces beautiful number的合成版.dp记录待填长度,是否带有13,前面数的模13余数,前一个数是k ...