Linux系统管理之植物大战僵尸(二)

// 四月 27th, 2010 // Linux, 技术相关

本文链接地址: Linux系统管理之植物大战僵尸(二)

//本来想明天发的,然而,由于一些原因,还是赶出来吧

//版权问题,恩 我什么都不知道

日子过了一天又一天的过去了,僵尸和植物们在你的计算机系统里面相处的很和睦,你也陆陆续续为很多植物和僵尸建立了他们的用户,直到有一天你对他们说你打算读博士的事情,导致大家的心情很不好:植物们担心你会读僵尸专业的博士,而僵尸们却又担心你读植物学博士,就在你的犹豫中,僵尸们聘请来了Dr.Zomboss,作为他们的特别好友顾问……
本次的考验是以上次题目为基础制作的,因此,如果没有或者删除了上次的东西,还要做些准备工作。
首先,建立两个组,分别为Plants和Zombies,分别存放僵尸与植物。
命令:
groupadd -g (gid) groupname
代码:
#groupadd -g 1003 Plants
#groupadd -g 1004 Zombies
在两个组中增加一些用户
命令:
#useradd -m -g (groupname) (username)
Dr.Zomboss刚刚入住到大脑技术开发区8号路,就给你列出来一些你必须帮他解决的问题:
a) 列出你的计算机系统上现在僵尸组有哪些用户,植物组有哪些用户?(植物用户们所在组叫做Plants,gid=1003;僵尸用户们所在组叫做Zombies,gid=1004。可以先用grep抓取用户文件中的:gid:取得对应组用户的每行内容,然后使用awk截取其中使用:分割出来的第一列,要求将awk的内容保存在文件中,起名叫做abc.awk(外部脚本),请写出你所执行的这条命令,以及你的abc.awk文件中的内容)。
我们知道,用户信息存放在/etc/passde文件中,因此,我们需要首先从/etc/passwd中获取两个组pid对应的用户信息
命令:
#grep :( gid):: /etc/passwd                    //gid要换成组号 如1003
grep 命令可以通过例如:1003:: 匹配所有包含这个信息的行(grep的用法请man)
获取的信息通过管道传送给awk 截取第一列输出
grep :( gid):: /etc/passwd|awk -F”:” ‘{print $1}’
Selection 005 Linux系统管理之植物大战僵尸(二)
awk主要作用是分割信息流,-F“:”表示用:符号分割信息,并将第一列($1)输出
若采取awk脚本,原理相同:
#vim getusr.awk
BEGIN{
FS=”:”                      //设置分割符为 :
}
{print $1}               //输出
使用awk脚本进行输出,并将结果保存到文件中备用
#Grep :( gid):: /etc/passwd|awk -f getusr.awk
#Grep :( gid):: /etc/passwd|awk -f getusr.awk > ~/tmp/Zombies_Users
Selection 006 Linux系统管理之植物大战僵尸(二)
b) 若上面找出的Zombies组的用户名已经保存~/temp/Zombies_Users的文件中,请你至少提供使用两条不同的命令过滤并打印出包含有“Zombies(不区分Z字母大小写)字符串的用户名,写出这两条不同的命令(可以使用grep、perl或sed等)。
建立两个测试用户: zombietester nozombiys
使用grep:
#grep  -E [Zz]ombies ~/tmp/Zombies_Users             //正则表达式匹配[Zz]就是不区分大小写
使用Sed:
sed  -n -e [Zz]ombies ~/tmp/Zombies_Users                    //同上
Selection 008 Linux系统管理之植物大战僵尸(二)
c) Dr.Zomboss带来了自己的笔记本电脑,他想让你给他共享一下你的互联网,以便他也能够上网。(共享上网实际上就是在你的计算机上构建一套NAT系统,其工作包括打开proc文件系统中的IPv4转发功能,用iptables命令设置内部网络(192.168.0.0/24)能够通过你的以太网口eth0伪装上网,请列出你所执行的命令)。
首先进行本地网络的构建本机用Virtualbox组网,Host(Debian)能够通过eth0访问网络,ip地址为10.0.2.15
同时有网卡eth1,ip地址192.168.0.1,Guest机(Windows)eth1 ip地址为192.168.0.88,与Host机eth1网卡直连。
(TODO:会尽快写出virtualbox中本地虚拟局域网的配置方法)
在Host机上进行相关网络配置:
Selection 010 Linux系统管理之植物大战僵尸(二)
开启IPv4转发:
#echo 1 > /proc/sys/net/ipv4/ip_forward
进行NAT系统构建,通过Host的eth0口转发:
#iptables -t nat -F     //免除之前的干扰,清空原有nat配置
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT –to-source 10.0.2.15      //设置SNAT

Selection 014 Linux系统管理之植物大战僵尸(二)

经过配置,已经可以通过NAT实现Guest机通过eth0口访问网络。
在Dr.Zomboss的带领下,僵尸们纷纷购买了笔记本电脑,他们认为你的四核计算机甚至没有TP-LINK的宽带路由器好用,因为你的计算机没有一个能够为他们自己分配IP地址、网关和DNS的服务,他们要求安装这个服务并完成IP地址、网关和DNS的自动分配(提示,安装DHCP服务,建议使用dhcp3-server软件,并设置向下分配的DNS为210.30.96.2,分配的IP地址段为192.168.1.100至192.168.1.200,分配的默认网关是192.168.1.1。
首先需要在Host机Debian上安装dhcp3-server软件:
#apt-get install dhcp3-server
配置dhcp3-server的配置文件:
设置子网自动获取IP地址与DNS 范围在192.168.0.100 到192.168.0.200之间
#vim /etc/dhcp3/dhcpd.comf
######################dhcpd.comf############################
ddns-update-style none;
option domain-name “sigmav.debian”;                    //名称
option domain-name-servers xxx.xx.xx.xx;    //DNS地址
default-lease-time 3600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 {   //网段 地址设置
range 192.168.0.100 192.168.0.200;
option routers 192.168.0.1;                                     //设置网关
}
###########################################################
重启dhcp3-server服务
#/etc/init.d/dhcp3-server restart
查看启动信息
#tail /var/log/message            //验证安装
通过以上配置Guest机通过设置DHCP自动获取功能,可以实现上网。
3. 写一个脚本:每隔五分钟运行一次,将当前的时间和当前的CPU空闲率(平均值)保存在一个名为“年-月-日的文件(文件位于/var/log文件夹下),例如/var/log/2010-04-13文件中保存这一天如下格式的内容:
2-05-99.01    其中2-05表示记录的时间是2点5分,99.01表示当前的CPU空闲率是99.01%。
建立脚本文件~/Shells/cpulog.sh 内容如下:
关于脚本的写法,建议参看《Linux Shell Scripting with Bash》
注意脚本中,变量获取要用“括起来。
#########################CPULOG.SH##################################
#!/bin/bash
# A sh to log the cpu idle rate to $log file
# Sigmax6@Sigmav.net
# Prepare the files
logdate=`date +%F`;               #  获取变量logdate ,date +%F 是获取YYYY-MM-DD  格式的日期
# log=`/var/log/$logdate`;         最终要获取/var/log/$logdate文件进行输出
#//———————————————————————————————
# Calc the cpu idle rate               计算CPU使用率
#当然 如果安装了sysstat 可以直接 sar -u 1 获取cpu使用率
#idlerate=`sar -u 1 | tail -1 | awk ‘{print $8}’`;       用sar获取cpu使用率 最后一行第八列是平均空闲率
#//———————————————————————————————
# Cpu idle rate=100*idle/(CPUTIME=user+nice+system+idle+iowait+irq+softirq)
# Set two time point to take the idle1 idle2 && CPUTIME1 CPUTIME2
# The avg is 100*(idle2-idle1)/(CPUTIME2-CPUTIME1)
idle1=`head -1 /proc/stat | awk ‘{print $5}’`;
CPUTIME1=`head -1 /proc/stat | awk ‘{print $2+$3+$4+$5+$6+$7+$8}’`;
# Sleep 10 s to reach timepoint 2
sleep 10;                 #等待10s 建立两个时间点用来计算平均值
# End of Sleep
idle2=`head -1 /proc/stat | awk ‘{print $5}’`;
CPUTIME2=`head -1 /proc/stat | awk ‘{print $2+$3+$4+$5+$6+$7+$8}’`;
idle=$[$idle2-$idle1];            #时间段内空闲时间差
CPUTIME=$[$CPUTIME2-$CPUTIME1]; #时间段内CPU总时间差
# Use bd to calc the float numbers
idlerate=$(echo “scale=2;100*$idle/$CPUTIME”|bc);    #这里使用bc命令,将除法交由bc运算,设置

#scale=2保证两位小数。

# Set the log time info as ?H-mm-idlerate
timeinfo=`date +%k-%M-`;                                                      #设置log项的头部信息 xH-mm格式
# Out put log file
if test -f /var/log/$logdate; then
echo “$timeinfo$idlerate” >> /var/log/$logdate;              #如果文件存在,则追加
else
echo “$timeinfo$idlerate” > /var/log/$logdate;                 #如果不存在,则创建写入
fi
############################################################
2、修改/etc/crontab 文件 增加计划任务:
*/5 *  * * *  root  /root/Shells/cpulog.sh
重新启动cron服务 使计划任务生效。
#/etc/init.d/cron restart
Selection 019 Linux系统管理之植物大战僵尸(二)

#################################################################

日子过了一天又一天的过去了,僵尸和植物们在你的计算机系统里面相处的很和睦,你也陆陆续续为很多植物和僵尸建立了他们的用户,直到有一天你对他们说你打算读博士的事情,导致大家的心情很不好:植物们担心你会读僵尸专业的博士,而僵尸们却又担心你读植物学博士,就在你的犹豫中,僵尸们聘请来了Dr.Zomboss,作为他们的特别好友顾问……
进行题目前,为了方便测试,先进行一些准备工作。
首先,建立两个组,分别为Plants和Zombies,分别存放僵尸与植物。
命令:
Groupadd -g (gid) groupname
代码:
Groupadd -g 1003 Plants
Groupadd -g 1004 Zombies
在两个组中增加一些用户
命令:
Useradd -m -g (groupname) (username)
Dr.Zomboss刚刚入住到大脑技术开发区8号路,就给你列出来一些你必须帮他解决的问题: a) 列出你的计算机系统上现在僵尸组有哪些用户,植物组有哪些用户?(植物用户们所在组叫做Plants,gid=1003;僵尸用户们所在组叫做Zombies,gid=1004。可以先用grep抓取用户文件中的:gid:取得对应组用户的每行内容,然后使用awk截取其中使用:分割出来的第一列,要求将awk的内容保存在文件中,起名叫做abc.awk(外部脚本),请写出你所执行的这条命令,以及你的abc.awk文件中的内容)。10’
首先从/etc/passwd中获取两个组pid对应的用户信息
命令:
Grep :( gid):: /etc/passwd
获取的信息通过管道传送给awk 截取第一列输出
Grep :( gid):: /etc/passwd|awk -F”:” ‘{print $1}’
若采取awk脚本,原理相同:
#vim getusr.awk
BEGIN{
FS=”:”
}
{print $1}
#Grep :( gid):: /etc/passwd|awk -f getusr.awk
#Grep :( gid):: /etc/passwd|awk -f getusr.awk > ~/tmp/Zombies_Users
b) 若上面找出的Zombies组的用户名已经保存~/temp/Zombies_Users的文件中,请你至少提供使用两条不同的命令过滤并打印出包含有“Zombies(不区分Z字母大小写)字符串的用户名,写出这两条不同的命令(可以使用grep、perl或sed等)。6’
建立两个测试用户: zombietester nozombiys
使用grep:
grep  -E [Zz]ombies ~/tmp/Zombies_Users
使用Sed:
sed  -n -e [Zz]ombies ~/tmp/Zombies_Users
c) Dr.Zomboss带来了自己的笔记本电脑,他想让你给他共享一下你的互联网,以便他也能够上网。(共享上网实际上就是在你的计算机上构建一套NAT系统,其工作包括打开proc文件系统中的IPv4转发功能,用iptables命令设置内部网络(192.168.0.0/24)能够通过你的以太网口eth0伪装上网,请列出你所执行的命令)。12’
首先进行本地网络的构建,Host(Debian)能够通过eth0访问网络,ip地址为10.0.2.15
同时有网卡eth1,ip地址192.168.0.1,Guest机(Windows)eth1 ip地址为192.168.0.88,与Host机eth1网卡直连。
在Host机上进行相关网络配置:
开启IPv4转发:
#echo 1 > /proc/sys/net/ipv4/ip_forward
进行NAT系统构建,通过Host的eth0口转发:
#iptables -t nat -F     //免除之前的干扰,清空原有nat配置
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT –to-source 10.0.2.15
经过配置,已经可以通过NAT实现Guest机通过eth0口访问网络。
在Dr.Zomboss的带领下,僵尸们纷纷购买了笔记本电脑,他们认为你的四核计算机甚至没有TP-LINK的宽带路由器好用,因为你的计算机没有一个能够为他们自己分配IP地址、网关和DNS的服务,他们要求安装这个服务并完成IP地址、网关和DNS的自动分配(提示,安装DHCP服务,建议使用dhcp3-server软件,并设置向下分配的DNS为210.30.96.2,分配的IP地址段为192.168.1.100至192.168.1.200,分配的默认网关是192.168.1.1,请在本题目中写出使用apt-get安装该软件的命令,以及你在该软件的配置文件(这个自己上网找找?)中的设置)。10’
安装dhcp3-server软件:
#apt-get install dhcp3-server
配置dhcp3-server的配置文件:
设置子网自动获取IP地址与DNS 范围在192.168.0.100 到192.168.0.200之间
#vim /etc/dhcp3/dhcpd.comf
######################dhcpd.comf############################
ddns-update-style none;
option domain-name “sigmav.debian”;
option domain-name-servers 210.30.96.2,202.118.66.6,202.118.66.8;
default-lease-time 3600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
option routers 192.168.0.1;
}
重启dhcp3-server服务
#/etc/init.d/dhcp3-server restart
查看启动信息
#tail /var/log/message
通过以上配置Guest机通过设置DHCP自动获取功能,可以实现上网。
3. 写一个脚本:每隔五分钟运行一次,将当前的时间和当前的CPU空闲率(平均值)保存在一个名为“年-月-日的文件(文件位于/var/log文件夹下),例如/var/log/2010-04-13文件中保存这一天如下格式的内容:
2-05-99.01    其中2-05表示记录的时间是2点5分,99.01表示当前的CPU空闲率是99.01%。(提示,获取当前CPU空闲率使用sar命令“sar –u 1即可,需要抓取平均值,并用awk截取CPU空闲率一列,脚本的定时运行需要使用计划任务,时间日期的特定写法需要使用date命令,脚本中的打印输出可以使用echo命令,本题目要求列出你对计划任务列表文件的修改,以及修改后生效的方法;列出你的脚本文件的内容;当然鼓励用其他使用脚本完成的方法)。14’    1、建立脚本文件~/Shells/cpulog.sh 内容如下:
#########################CPULOG.SH##################################
#!/bin/bash
# A sh to log the cpu idle rate to $log file
# Sigmax6@Sigmav.net
# Prepare the files
logdate=`date +%F`;               #The name of the log YYYY-MM-DD
# log=`/var/log/$logdate`;         #Path of the log file
# Calc the cpu idle rate
# Cpu idle rate=100*idle/(CPUTIME=user+nice+system+idle+iowait+irq+softirq)
# Set two time point to take the idle1 idle2 && CPUTIME1 CPUTIME2
# The avg is 100*(idle2-idle1)/(CPUTIME2-CPUTIME1)
idle1=`head -1 /proc/stat | awk ‘{print $5}’`;
CPUTIME1=`head -1 /proc/stat | awk ‘{print $2+$3+$4+$5+$6+$7+$8}’`;
# Sleep 10 s to reach timepoint 2
sleep 10;
# End of Sleep
idle2=`head -1 /proc/stat | awk ‘{print $5}’`;
CPUTIME2=`head -1 /proc/stat | awk ‘{print $2+$3+$4+$5+$6+$7+$8}’`;
idle=$[$idle2-$idle1];
CPUTIME=$[$CPUTIME2-$CPUTIME1];
# Use bd to calc the float numbers
idlerate=$(echo “scale=2;100*$idle/$CPUTIME”|bc);
# Set the log time info as ?H-mm-idlerate
timeinfo=`date +%k-%M-`;
# Out put log file
if test -f /var/log/$logdate; then
echo “$timeinfo$idlerate” >> /var/log/$logdate;
else
echo “$timeinfo$idlerate” > /var/log/$logdate;
fi
############################################################
2、修改/etc/crontab 文件 增加计划任务:
*/5 *  * * *  root  /root/Shells/cpulog.sh
重新启动cron服务 使计划任务生效。
#/etc/init.d/cron restart
4、查看log文件 验证计划任务已经正常工作。    4. 你的主机被ISP选为了NGN(下一代互联网)的测试用户,他们给你自动分配了一段IPv6的地址,并提出了一些要求: a) 为你的主机添加一条IPv6的DNS服务器2001:da8:8000:1:202:120:2:100
b) 测试一下你到主机www.dlut.edu.cn的IPv6链路是否畅通
c) 看看你的IPv6链路到主机www.dlut.edu.cn的路由是什么样的
A:echo “nameserver 2001:da8:8000:1:202:120:2:100 “>> /etc/resolv.conf
B:ping6 www.dlut.edu.cn
C:traceroute6 www.dlut.edu.cn
写出完成上述三条任务所要执行的命令以及其完整参数。8’

##########################################

* 西格玛向量™->个人博客,欢迎访问:您的满意,我的动力。

##########################################

文章的脚注信息由WordPress的wp-posturl插件自动生成

Leave a Reply