#!/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的更多相关文章

随机推荐

  1. string 和 wstring

    区别: char* wchar_t 一个字节 两个字节 ACSII编码 unicode编码 转换: 1.Windows API WideCharToMultiByte() MultiByteToWid ...

  2. 《剑指offer》第十四题(剪绳子)

    // 面试题:剪绳子 // 题目:给你一根长度为n绳子,请把绳子剪成m段(m.n都是整数,n>1并且m≥1). // 每段的绳子的长度记为k[0].k[1].…….k[m].k[0]*k[1]* ...

  3. 【Golang 接口自动化07】struct转map的三种方式

    背景 我们在前面介绍过怎么使用net/http发送json或者map数据,那么它能不能直接发送结构体数据呢?我们今天一起来学习结构体struct转map的三种方法,为后续做铺垫. struct转map ...

  4. c# 获取方法所在的命名空间 类名 方法名

    平时我们在记录日志的时候难免会需要直接记录当前方法的路径,以便查找,但是每次都输入方法名称非常的繁琐,同时如果修改了方法名称也要去手动修改日志内容,真的是劳命伤财啊,所以有了如下方法则可解决我们的大难 ...

  5. C#退出模式

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Application.Exit();  强制所有消息中 ...

  6. 20170528xlVBA凑数一例

    Public Sub MakeUp() Dim Sht As Worksheet Set Sht = ThisWorkbook.Worksheets("设置") Dim Total ...

  7. 『科学计算』图像检测微型demo

    这里是课上老师给出的一个示例程序,演示图像检测的过程,本来以为是传统的滑窗检测,但实际上引入了selectivesearch来选择候选窗,所以看思路应该是RCNN的范畴,蛮有意思的,由于老师的注释写的 ...

  8. 使用tomcat启动dubbo项目

    首先,黑体标出 官方不推荐使用web容器进行dubbo的启动 但是,有些时候,我们不采用他们的建议. 背景: 之前用的dubbo项目,是由main函数启动的,每次发布项目,需要启动两项: 1. tom ...

  9. OC Block(代码块)

    #import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...

  10. spark RDD操作的底层实现原理

    RDD操作闭包外部变量原则 RDD相关操作都需要传入自定义闭包函数(closure),如果这个函数需要访问外部变量,那么需要遵循一定的规则,否则会抛出运行时异常.闭包函数传入到节点时,需要经过下面的步 ...