N22-妙手-第八周课程练习

1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。

    网桥:

        一种网络设备,负责网络桥接,将网络的多个网段在数据链路层连接起来。

    集线器:

        是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。集线器是运作在OSI模型中的物理层。它可以视作多端口的中继器,若它侦测到碰撞,它会提交阻塞信号。

    二层交换机:

        可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中

    三层交换机:

        三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发

    路由器:

        是连接因特网中各局域网广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号

2、IP地址的分类有哪些?子网掩码的表示形式及其作用

    (1) IP地址的分类:共有5类

地址类型

范围

主机数数

网络数

网络号

主机号

A类

0.0.0.0-127.255.255.255

2^24-2

126

7

24

B类

128.0.0.0-191.255.255.255

2^16-2

2^14

14

16

C类

192.0.0.0-223.255.255.255

2^8-2

2^21

21

8

D类

224.0.0.0-239.255.255.255

N/A

N/A

E类

240.0.0.0-255.255.255.255

N/A

N/A

    (2) 子网掩码

        用于与IP地址按位进行“与”运算,从而取出网络地址,来界定通信主机。

        点分四组表示:例如,255.255.0.0

        CIDR表示:在IP地址后加/BITS,例如192.168.199.71/24 <==> IP: 192.168.199.71 NETMASK: 255.255.255.0

3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。

    (1) 协议表示

protocol.png

    (2)功能及涉及到的物理设备

OSI协议

TCP/IP协议

功能

物理设备

应用层
  表示层
  会话层

应用层

将数据打包成一个数据包,给予一个应用层报头,向下传给传输层

N/A

传输层

传输层

将数据封装给予报头,向下给网络层

N/A

网络层

网络层

给予IP报头,向下传输给物理层

以太网

数据链路层
  物理层
 
 

物理层

将数据封装并给予MAC帧头,转成比特流之后利用传输介质发送到远程主机上

路由器、交换机

4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)

 可以通过命令和修改配置文件两种方式手动将Linux主机介入到TCP/IP网络

修改的参数

配置文件

查看结果的命令

IP相关参数

/etc/sysconfg/network-scripts/ifcfg-IFACE_NAME

ifconfig(IP/NETMASK)

DNS

/etc/resolver.conf

dig –t A www.baidu.com

GATEWAY

/etc/sysconfig/network

route -n

    (1) IP/NETMASK的配置

2016-10-03 12_47_28-CentOS 7.1 - root@localhost__etc_sysconfig_network-scripts - Xshell 5 (Free for .png

    (2) 配置DNS服务

dns.png

    (3) 配置网关信息

GW.png

    (4) 开启网路服务

[root@localhost ~]# systemctl start network.service

    (5) 测试连接网络连接

[root@localhost ~]# ping -c 2 www.baidu.com
PING www.a.shifen.com (220.181.111.188) 56(84) bytes of data.
64 bytes from 220.181.111.188: icmp_seq=1 ttl=55 time=30.2 ms
64 bytes from 220.181.111.188: icmp_seq=2 ttl=55 time=66.8 ms

--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 30.213/48.541/66.870/18.329 ms
[root@localhost ~]# dig -t A www.baidu.com


5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。

    (1) 编辑配置文件:

        配置网络接口,网关:编辑/etc/sysconfig/network-script/ifconfig-IFACE

        配置DNS服务器:编辑/etc/resolv.conf

    (2) 通过命令指定:    

[root@localhost ~]# ip addr add 192.168.199.30/24 dev eth0

6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;

     在线的主机使用绿色显示;

     不在线的主使用红色显示;

#!/bin/bash
for ((i=1;i<255;i++));do
        ping -c 1 -w 1 "172.16.250.$i" >/dev/null
        if [ $? -eq 0 ];then
                echo -e "\033[0;32;1m 192.168.1.$i is up! \033[0m"
        else
                echo -e "\033[0;31;1m 192.168.1.$i is down! \033[0m" 
        fi
done

7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;

    (1) IP/NETMASK/GW/DNS等属性配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE

        DEVICE: 设备名称

        ONBOOT={yes|no}:在系统引导过程中,是否激活此接口

        TYPE={Ethert|Bridge}:接口类型

        DNS1:主DNS服务器指向

        DNS2:从DNS服务器指向

        IPADDR:ip地址

        NETMASK:子网掩码

        GATEWAY:默认网关

        BOOTPROTO={none|dhcp|static|bootp}:激活此接口时用什么协议来配置此接口属性

        UUID:设备的唯一标识

        DOMAIN:DNS搜索域

        USERCTL:是否允许普通用户控制此设备

        HWADDR:设备的MAC地址

        PEERDNS={no|yes}:是否允许dhcp server 分配的DNS服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许

    (2) 路由相关配置文件:/etc/sysconfig/network-scripts/route-IFACE

    (3) 主机名配置文件:/etc/sysconfig/network


8、如何给网络接口配置多个地址,有哪些方式?

    三种方式:

        (1) ifconfig命令

[root@localhost ~]# ifconfig eno16777736:0 192.168.199.86/24

        (2) ip命令

[root@localhost ~]# ip address add 192.168.199.88 dev eno16777736:1

        (3) 编辑网络接口配置文件

vim /etc/sysconfig/network-scripts/ifcfg-eno16777736

9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。

    (1) ifcfg家族

        ifconfig:

            [root@localhost ~]# ifconfig eth0

        route:

           [root@localhost ~]# route -n

        netstat:

            [root@localhost ~]# netstat -tunlp

    (2) route2家族

        ip:

            [root@localhost ~]# ip addr show eth0

        ss:

            [root@localhost ~]# ss -tunlp

    (3) nm家族

        nmtui:图形界面配置网络

        nmcli:文本界面下配置网络

10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。

    (1) 什么是程序包管理:

        源代码编译–>目标二进制格式–>组织成为一个或有限几个”包“文件 –> 进行安装、升级、卸载、查询、校验等管理功能

    

    (2) Linux各发行版的程序包管理器:

        Debian: dpt

        Red Hat: rpm – redhat package manager

        S.U.S.E: rpm

        注意:下面的介绍以Red Hat的rpm作为软件包管理器

    

    (3) rpm软件包管理方法:

        rpm命令格式:rpm [OPTIONS] [PACKAGE_FILE]

        常用选项:

            安装:-i, –install

            升级:-U, –update, -F, –freshen

            卸载:-e, –erase

            查询:-q, –query

            校验:-V, –verify

    

    (4) 常用管理方法:

         安装

        rpm {-i|–installation} [install-options] PACKAGE_FILE…

        安装常用选项组合:rpm -ivh PACKAGE_FILE

    

    [install-options]:

        -h: hash marks输出进度条:每个#表示2%的进度

        –test:测试安装,检查并报告依赖关系及冲突消息等

        –nodeps:忽略依赖关系

        –replacepkgs:替代原来的包重新安装

        升级

            rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

            rpm {-F|–freshen} [install-options] PACKAGE_FILE

            -U:升级或安装,如果程序包没有安装,则安装程序包

            -F:升级,如果程序包没有安装,不做任何操作

    

        升级操作常用组合:

        rpm -Uvh PACKAGE_FILE…

        rpm -Fvh PACKAGE_FILE…

        –oldpackage:降级

        –forece:强制降级


        卸载:

            rpm {-e|–erase} {–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME…

            –allmatches:卸载所有匹配指定名称的程序包的各版本

            –nodeps:忽略依赖关系

            –test:测试卸载,并不执行真正的卸载操作

    

        查询:

            rpm [-q|–query} [select-options] [query-options]


            查询常用组合:

            rpm -qi PACKAGE: 查询程序包信息

            rpm -qf FILE:查询指文件由那个程序包安装成圣

            rpm -qc PACKAGE:查询指定的程序包提供的配置文件

            rpm -ql PACKAGE:程序包安装生成的所有文件列表

            rpm -qd PACKAGE:查询程序包安装生成的文档

            rpm -qpl PACKAGE_FILE:查询未安装程序包文件所提供的所有文件列表

            rpm -qpi PACKAGE_FILE:查询未安装程序包文件的简要信息

            rpm -qpi PACKAGE_FILE:查询未安装程序包文件所所提供的配置文件

    

    校验:包来源合法性和完整性校验

    

11、如何使用发行版光盘作为yum repository,请描述该过程。

    (1) 将光盘挂载到/media/cdrom下

[root@localhost ~]# mount -r /dev/cdrom /media/cdrom
[root@localhost ~]# ls /media/cdrom
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

    (2) 创建.repo文件

[root@localhost yum.repos.d]# cp CentOS-Media.repo local.repo

    (3) 编辑local.repo文件

repo.png

    (4) 启用本地光盘源

[root@localhost yum.repos.d]# yum-config-manager --enable local.rep
[root@localhost yum.repos.d]# yum repolist | grep local
local-repo                       CentOS Local Media                       9,007

12、写一个脚本,完成以下功能

   (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

   (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

   (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

   (4) 分别统计S开头和K开头的文件各有多少;

#!/bin/bash
#
declare -i k=0
declare -i s=0

for i in $(ls /etc/rc.d/rc3.d/K* | grep -o "[^/]*$"); do
    echo "$i stop"
    let k++
done

for i in $(ls /etc/rc.d/rc3.d/S* | grep -o "[^/]*$"); do
    echo "$i start"
    let s++
done

echo "Start with K: $k"
echo "Start with S: $s"

13、写一个脚本,完成以下功能

   (1) 脚本能接受用户名作为参数;

   (2) 计算此些用户的ID之和;

#!/bin/bash
#

declare -i idSum=0
userNumber=$#

if [ $userNumber -lt 1 ]; then
    echo "Please intput at least one user existed in current system"
    exit 1
fi

for user in $@; do
    if id $user >& /dev/null; then
        userid=$(id -u $user)
        idSum=$[$userid+$idSum]
    else
        echo "$user is not exist, system will add this user"
        useradd $user
        newUserid=$(id -u $user)
        idSum=$[$newUserid+$idSum]
    fi
done

echo "the user ID sum is: $idSum"

14、写一个脚本

   (1) 传递一些目录给此脚本;

   (2) 逐个显示每个目录的所有一级文件或子目录的内容类型;

   (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

#!/bin/bash
#

declare -i dirQuantity=0
declare -i fileQuantity=0
if [ $# -lt 1 ]; then
    echo "Please send at least one direcoty to shell script"
    exit 1
fi

for directory in $@; do
    if [ -d $directory ]; then
        for i in $direcotry/*; do
            if [ -f $i ]; then
                ls -l $i
                let fileQuantity++
            elif [ -d $i ]; then
                ls -l $i
                let dirQuantity++
            else
                "this file type will be not counted"
            fi
        done

    else
        echo "$direcotry is not a valid directory"
    fi
done

15、写一个脚本

  通过命令行传递一个参数给脚本,参数为用户名

  如果用户的id号大于等于500,则显示此用户为普通用户;

    脚本内容

#!/bin/bash
#

username=$1

if [ $# -eq 1 ]; then
    if id $username >& /dev/null; then
        while read userLine; do
            userID=$(echo $userLine | grep "$username" | cut -f3 -d:)
            if [ -n "$userID" ]; then
                if [ $userID -gt 500 ]; then 
                    echo "$username is common user"
                    break
                else
                    echo "$username is special user"
                    break
                fi
            fi
        done < /etc/passwd
    else 
        echo "Please input exist username"
        exit 1
    fi
else
    echo "please input one username existed in current system"
    exit 2
fi

    执行结果

[root@localhost week08]# bash sh15.sh max
max is common user
[root@localhost week08]# bash sh15.sh root
root is special user

16、写一个脚本

   (1) 添加10用户user1-user10;密码同用户名;

   (2) 用户不存在时才添加;存在时则跳过;

   (3) 最后显示本次共添加了多少用户;

    脚本内容

#!/bin/bash
#

declare -i totalAddedUser=0
for i in {1..10}; do
    username=user$i
    if id $username >& /dev/null; then
        continue
    else
        useradd $username
        echo $username | passwd --stdin $username >& /dev/null
        let totalAddedUser+=1
    fi
done

echo "Total added users: $totalAddedUser"

    执行结果

[root@localhost week08]# bash sh16.sh 
Total added users: 10
[root@localhost week08]# bash sh16.sh 
Total added users: 0

17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

#!/bin/bash
#

ipSegment=192.168.199.

for i in {100..199}; do

    ping -c 1 -w 1 $ip$i &> /dev/null
    if [ $? -eq 0 ]; then
        echo "$ip$i is online"
    fi
done

18、打印九九乘法表;

    脚本内容

#!/bin/bash
#
for ((i=1;i<=9;i++)); do
    for ((j=1;j<=i;j++)); do    
        echo -n -e "${j}X${i}=$[${j}*${i}]\t"
    done
    echo
done

    执行结果

[root@localhost week08]# bash sh18.sh 
1X1=1    
1X2=2    2X2=4    
1X3=3    2X3=6    3X3=9    
1X4=4    2X4=8    3X4=12    4X4=16    
1X5=5    2X5=10    3X5=15    4X5=20    5X5=25    
1X6=6    2X6=12    3X6=18    4X6=24    5X6=30    6X6=36    
1X7=7    2X7=14    3X7=21    4X7=28    5X7=35    6X7=42    7X7=49    
1X8=8    2X8=16    3X8=24    4X8=32    5X8=40    6X8=48    7X8=56    8X8=64    
1X9=9    2X9=18    3X9=27    4X9=36    5X9=45    6X9=54    7X9=63    8X9=72    9X9=81

原创文章,作者:mxb93,如若转载,请注明出处:http://www.178linux.com/49489

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-10 13:50

    几个脚本写的不错,概念需要注意下,比如OSI七层协议和 TCP/IP协议族~~还需努力~