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的更多相关文章
随机推荐
- NGUI 中,长技能图标显示技能Tips的核心代码
需要将技能图标对应的位置Pos赋给Tips即可.下面是计算 Pos 的核心代码: using UnityEngine; public class LgsTest : MonoBehaviour { [ ...
- Linux后台日志定时清理脚本
一. 简介 linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否 ...
- 使用MyBatis Generator自动生成实体、mapper和dao层
原文链接 通过MyBatis Generator可以自动生成实体.mapper和dao层,记录一下怎么用的. 主要步骤: 关于mybatis从数据库反向生成实体.DAO.mapper: 参考文章:ht ...
- springboot入门(一)--快速搭建一个springboot框架
原文出处 前言在开始之前先简单介绍一下springboot,springboot作为一个微框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框架 ...
- SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍
原文 SpringBoot 中常用注解 @Controller/@RestController/@RequestMapping介绍 @Controller 处理http请求 @Controller / ...
- http-server 基于nodejs的http服务器
http-server所用场景: 作为前端的同学来说,想要运行一段代码,但又没有必要使用tomcat或是Apache http server,这个时候,一个简单的轻量的http-server就能搞定. ...
- [Java学习] Java方法重载
在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading). 参数列表又叫参数签名,包括参数的类型.参数的个数和参数的顺 ...
- Confluence 6 快捷键
快捷键图标. 官方的下载地址为:https://atlassianblog.wpengine.com/wp-content/uploads/2018/01/keyboard-shortcuts-inf ...
- Confluence 6 连接一个目录
你可以添加下面类型的目录服务器和目录管理器: Confluence 的内部目录(Configuring the Internal Directory). Microsoft Active Direct ...
- Mac下找不到gl.pc和glu.pc
在用pkg-config可以用来自动查找对应库的include和lib文件,方便编译.它主要通过PKG_CONFIG_PATH和/usr/lib/pkgconfig目录下的.pc文件进行自动配置.在c ...