linux基础第八周作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础第八周作业相关的知识,希望对你有一定的参考价值。
1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。
网桥 | 集线器 | 二层交换机 | 三层交换机 | 路由器 | |
功能
| 连接连个不同的网段 | 多端口的中继器,数据信号广播转发 | 工作在数据链路层,数据寻址交换 | 工作在网络层,具有转发功能 | NAT,网关设备,用于分割网络 |
使用场景 | 正在退出 | 信号整合放大 | 局域网内部 | 局域网内部 | 局域网到互联网入口 |
区别 | 功能不同且工作在不同的层次和场景 |
2、IP地址的分类有哪些?子网掩码的表示形式及其作用
范围 | 子网掩码 | ||
形式 | 作用 | ||
A | 1.0.0.0-126.255.255.255 | */8或255.0.0.0 | 10.0.0.0-10.255.255.255局域 |
B | 128.0.0.0-191.255.255.255 | */16或255.255.0.0 | 127.0.0.1专用,局域 172.16.0.0-172.31.255.255 |
C | 192.0.0.0-223.255.255.255 | */24或255.255.255.0 | 192.168.0.0/24局域 |
D | 224.0.0.0-239.255.255.255 | 组播 | MASK将IP划分为网络ID和主机ID |
E | 多播保留地址 |
3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。
OSI | TCP/IP | 功能 | 设备 |
应用层 |
应用层 | 人机交互接口 | 网络管理软件 |
表示层 | 接收来自应用层的动作,并处理成机器指令传递给会话层 | ||
会话层 | 为两个实体的表示层提供建立和使用连接的方法 | ||
传输层 | 传输层 | 会话层和网络层之间的传输 | |
网络层 | 网络层 | 建立维持和终止网络连接 | 路由器 |
数据链路层 |
物理接口 | 建立和管理节点间的链路 | 交换机,网桥 |
物理层 | 为网络连接提供物理介质 | 网线,网卡,中继器 |
4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)
1)物理连接,通过RJ45网线或者光纤连接linux主机和互联接入端;
2)设置IP地址
3)设置子网掩码
4)设置网关
5)设置主DNS服务器,从DNS服务器,备用DNS服务器
6)重新加载网络服务
[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes #开机启动 BOOTPROTO=static #手动指定IP地址 IPADDR=192.168.1.77 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 [[email protected] ~]# service network restart [[email protected] ~]# vi /etc/resolv.conf nameserver 8.8.8.8 #添加DNS
5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。
1)使用命令ifconfig eth0 192.168.1.77 临时立即生效,重启系统后失效 2)修改网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 需要重启后生效 3)使用图形界面 setup--网络配置 修改后重启服务
6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
不在线的主使用红色显示;
#!/bin/bash #v0.1 #[email protected] net=172.16.150. let online=0 let notonline=0 for i in {1..254};do if (ping $net$i &> /dev/dull);then let online+=1 echo -e “\e[1;32m $net$i \e[0m” else let notonline+=1 echo -e “\e[1;31m $net$i \e[0m” fi done echo “online hosts :$online” echo “not online hosts :$notonline”
7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;
CentOS6配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" <网卡号,和ifcfg-eth0对应就可以> HWADDR="08:00:27:1C:81:0A" <网卡的MAC地址> ONBOOT="yes" <在系统引导时是否激活此设备> BOOTPROTO=none <手动设置IP选择none,自动获取选dhcp> USERCTL="yes" <普通用户是否可控制此设备> IPADDR=192.168.1.100 <设定本网卡IP地址> NETMASK=255.255.255.0 <子网掩码> GATEWAY=192.168.1.1 <网关地址> DNS1=211.67.32.32 <首选DNS地址> DNS2=202.103.44.150 <次选DNS地址>
CentOS 7 配置文件
BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" UUID="7a4d0a76-affb-42ab-b47c-4b548237c5ff" DEVICE="eno16777736" ONBOOT="yes"
8、如何给网络接口配置多个地址,有哪些方式?
配置网络别名
ifconfig eth0:1 192.168.1.77
新建eth0:0配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=static
IPADDR=192.168.1.77
NETMASK=255.255.255.0
ONBOOT=yes
9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。
ip [addr|route|link] 设置地址路由链接
ifconfig查看当前网络连接
[[email protected] ~]# ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.2.11.194 netmask 255.255.255.0 broadcast 10.2.11.255 inet6 fe80::20c:29ff:fea6:a732 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:a6:a7:32 txqueuelen 1000 (Ethernet) RX packets 49848 bytes 50749094 (48.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 32761 bytes 3468601 (3.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 808 bytes 90300 (88.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 808 bytes 90300 (88.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
netstat 和ss 查看各种网络服务连接状态
[[email protected] ~]# netstat -tuan #-t<tcp>,-u<udp>,-a<all>,-n<numeric>,-l<listening>,... ... Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 10.2.11.194:22 10.2.11.26:52998 ESTABLISHED tcp 0 52 10.2.11.194:22 10.2.11.26:52980 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN udp 0 0 0.0.0.0:48559 0.0.0.0:* udp 0 0 0.0.0.0:68 0.0.0.0:* udp6 0 0 :::40698 :::*
route 路由相关信息
[[email protected] ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.2.11.1 0.0.0.0 UG 100 0 0 eno16777736 10.2.11.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
setup 图形管理界面
10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。
rpm 包管理(原Redhat Packages Manager,RPM Packages Manager)
rpm -qa 查看所有已安装的包
rpm -qf Package 查找包
安装:rpm -ivh Package(-i安装,-v显示正在处理的文件,-h显示进度)
升级:rpm -uvh Package;此包为升级程序的升级补丁
卸载:rpm -e Package
查找已安装中损坏的程序:rpm -Va;可以通过安装光盘中的包进行修复操作。(-V验证)
--force 强制执行
--requires 显示包的依赖关系
--nodeps 忽略依赖关系继续执行
yum 包管理(Yellow dog Updater Modified)
安装:yum install package_name
升级:yum update package_name
卸载:yum remove package_name
查看:yum repolist仓库
yum grouplist 包组
yum list 所有包
11、如何使用发行版光盘作为yum repository,请描述该过程。
1)挂载光盘:mount /media/cdrom /tmp/contos6.8
2)编辑配置文件:vim /etc/yum.repo.d/*.repo
[CentOS-localrepo]
name = contos-localrepo
baseurl=file:///tmp/contos6.8/Packages
gpgcheck=0
enabled=1
3)更新yum并使配置生效
yum clean all
12、写一个脚本,完成以下功能
(1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
(2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
(3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
(4) 分别统计S开头和K开头的文件各有多少;
#!/bin/bash # let s=0 let k=0 for i in `ls /etc/rc.d/rc3.d/|sed -n ‘s/^K/stop&/p‘`;do echo $i k+=1 done for j in `ls /etc/rc.d/rc3.d/|sed -n ‘s/^S/start&/p‘`;do echo $j s+=1 done echo "S files:$s" echo "K files:$k"
[[email protected] ~]# bash sknum.sh stopK50netconsole startS10network S files:01 K files:01
13、写一个脚本,完成以下功能
(1) 脚本能接受用户名作为参数;
(2) 计算此些用户的ID之和;
#!/bin/bash # let idnum=0 for i in $*;do id -u $i &> /dev/null if [ $? -ne 0 ] ;then echo "$i not exist" else let idnum+=`id -u $i` fi done echo "all user_id add:$idnum" [[email protected] ~]# bash userid.sh lanin named mysql sshd ll ll not exist all user_id add:1126
14、写一个脚本
(1) 传递一些目录给此脚本;
(2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
(3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash # let idnum=0 for i in $*;do id -u $i &> /dev/null if [ $? -ne 0 ] ;then echo "$i not exist" else let idnum+=`id -u $i` fi#!/bin/bash # let idnum=0 for i in $*;do id -u $i &> /dev/null if [ $? -ne 0 ] ;then echo "$i not exist" else let idnum+=`id -u $i` fi done echo "all user_id add:$idnum" done echo "all user_id add:$idnum"
15、写一个脚本
通过命令行传递一个参数给脚本,参数为用户名
如果用户的id号大于等于500,则显示此用户为普通用户;
#!/bin/bash # if [ $# -lt 1 ];then echo "Input a user name at least!" fi for i in $*;do id -u $i &> /dev/null if [ $? -ne 0 ] ;then echo "$i not exist" elif [ `id -u $i` -lt 500 ];then echo "$i is system user" else echo "$i is common user" fi done
[[email protected] ~]# bash usercommon.sh apache lanin root apache is system user lanin is common user root is system user
16、写一个脚本
(1) 添加10用户user1-user10;密码同用户名;
(2) 用户不存在时才添加;存在时则跳过;
(3) 最后显示本次共添加了多少用户;
#!/bin/bash # user=user declare -i num=0 for i in {1..10};do if ( id -u $user$i &> /dev/null ) ;then continue else echo "adding $user$i ..." useradd $user$i echo "$user$i" | passwd --stdin $user$i &> /dev/null num+=1 echo "added $user$i finished." fi done echo "addusers number:$num"
[[email protected] ~]# bash useradd.sh adding user1 ... added user1 finished. adding user2 ... added user2 finished. adding user3 ... added user3 finished. adding user4 ... added user4 finished. adding user5 ... added user5 finished. adding user6 ... added user6 finished. adding user7 ... added user7 finished. adding user8 ... added user8 finished. adding user9 ... added user9 finished. adding user10 ... added user10 finished. addusers number:10
17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;
#!/bin/basj #v0.1 net=172.16.250. let online=0 echo "正在执行......" for i in {20..100};do if ( ping -c 1 -w 1 $net$i &> /dev/dull );then let online+=1 echo -e "\e[1;32m $net$i \e[0m" fi done echo "online hosts :$online"
linux下禁ping方法:
~]#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
这样就可以禁ping了。如果想恢复ping可以执行命令
~]#echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
18、打印九九乘法表;
[[email protected] ~]# cat jiujiu.sh #!/bin/bash # for i in {1..9};do for j in $(seq 1 $i);do echo -ne "$j*$i=$[$j*$i]\t" done echo done
[[email protected] ~]# bash jiujiu.sh 1*1=1 1*2=22*2=4 1*3=32*3=63*3=9 1*4=42*4=83*4=124*4=16 1*5=52*5=103*5=154*5=205*5=25 1*6=62*6=123*6=184*6=245*6=306*6=36 1*7=72*7=143*7=214*7=285*7=356*7=427*7=49 1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64 1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
本文出自 “11460225” 博客,请务必保留此出处http://11470225.blog.51cto.com/11460225/1858590
以上是关于linux基础第八周作业的主要内容,如果未能解决你的问题,请参考以下文章
2017-2018-1 20179215《Linux内核原理与分析》第八周作业
2017-2018-1 20179209《Linux内核原理与分析》第八周作业