马哥教育N22期第八周作业

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

设备 功能 使用场景 区别
网桥 根据MAC地址来转发帧,本地通信只限本网段内, 相当于中继器,线路比较长保证信号不变形的传输 工作在物理层,相当于一个物理接口
集线器 接收到的数据包进行广播转发,所有端口都能收到此数据,通过MAC确认是不是发给自己的包进行回应 广播形式转发数据都每个端口 工作在数据链路层,共享带宽
二层交换机 物理编址、网络拓扑结构、错误校验、帧序列以及流控 不是广播形式转发数据,对于一个目的MAC进行转发 工作在数据链路层,与集线器不同,不是广播形式,而是选择,同时独享带宽
三层交换机 通过IP转发数据包,不具有选路功能 基于IP的转发 工作在网络层,相当于路由器
路由器 为经过路由器的每个数据包寻找一条最佳传输路径 选路,转发,NAT等 工作在网络层,路由选路转发数据

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

以IPv4为例说明

  • A类地址:范围从0~127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的。因此,A类地址的范围其实是从1~126之间。如:10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地主机号。转换为2进制来说,一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从0.0.0.1到126.255.255.255。可用的A类网络有126个,每个网络能容纳1亿多个主机(2的24次方的主机数目)。以子网掩码来进行区别:255.0.0.0

  • B类地址:范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算机的号码。转换为2进制来说,一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机。以子网掩码来进行区别:255.255.0.0。

  • C类地址:范围从192-223,如192.168.1.1,第一,第二,第三段号码为网络号码,剩下的最后一段号码为本地计算机的号码。转换为2进制来说,一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。以子网掩码来进行区别:255.255.255.0。

  • D类地址:范围从224-239,D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

  • E类地址:范围从240-254,以“11110”开始,为将来使用保留。全零 (“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

除了以上描述的默认子网掩码我们还可以通过子网掩码划分子网:

  • 首先我们介绍一下取得网络号和主机号:

    例如:假设有一个 I P 地址: 192.168.0.1
         子网掩码为: 255.255.255.0
         化为二进制为: I P 地址 11000000.10101000.00000000.00000001
         子网掩码 11111111.11111111.11111111.00000000
         将两者做 ' 与 ' 运算得: 11000000.10101000.00000000.00000000
         将其化为十进制得: 192.168.0.0(即网络号)
         0.1中的1就是主机号
  • 网络号、子网号和子网主机号:

    以上面例子为例,再想划分6个子网,我们可以增加掩码长度:
    子网掩码为: 255.255.255.224
    去除全0和全1的,001、010、011、100、101、110
    将其化为十进制得: 192.168.0.32/64/96/128/160/192(即网络号)

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

OSI层 功能 协议
应用层 文件传输,电子邮件,文件服务,虚拟终端 tftp,http,snmp,ftp
表示层 数据格式化,代码转换,数据加密
会话层 解除或建立与其他接点的联系
传输层 提供端对端接口 tcp,udp
网络层 为数据包选择路由 ip,icmp,rip,igmp
数据链路层 传输地址帧、错误检测功能 slip,cslip
物理层 以二进制形式在物理媒介上传输数据 以太网,令牌网

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

  • 通过配置文件方式:

    # vim /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0    //接口名字
    HWADDR=00:0C:29:06:1B:37
    TYPE=Ethernet   //以太网
    UUID=eeff4c0e-9f73-4e08-b8ae-ede6eb054c32
    ONBOOT=no
    NM_CONTROLLED=yes
    BOOTPROTO=dhcp  //上网方式dhcp接口获取IP,
  • 如果没有dhcp服务器,可以通过设置路由来上网:

    ifconfig eth0 IP/MASK
    
    [root@localhost ~]# service network restart
    正在关闭接口 eth0:      [确定]
    关闭环回接口:           [确定]
    弹出环回接口:           [确定]

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

  • ifconfig

    [root@localhost ~]# ifconfig eth0:0 192.168.9.100/24
    [root@localhost ~]# ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:06:1B:37  
              inet addr:192.168.9.19  Bcast:192.168.9.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe06:1b37/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:371382 errors:0 dropped:0 overruns:0 frame:0
              TX packets:17991 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:23095265 (22.0 MiB)  TX bytes:1496195 (1.4 MiB)
    
    eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:06:1B:37  
              inet addr:192.168.9.100  Bcast:192.168.9.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  • ip

    [root@localhost ~]# ip addr add 192.168.9.101 dev eth0:1
  • 修改配置文件

    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

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

#!/bin/bash
#
for i in {1..254};do
        ping 172.16.250.$i -w 2 -c 2 &>/dev/null
        result=$?
        if [ $result -eq 0 ];then
                echo -e "\033[32m 172.16.250.$i \033[0m"
        else

                echo -e "\033[31m 172.16.250.$i \033[0m"
        fi
done
[root@localhost test-scripts]# bash ping.sh 
 172.16.250.1 
 172.16.250.2 
 172.16.250.3 
 172.16.250.4 
 172.16.250.5

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

DEVICE=eth0         //此配置文件应用到的设备
HWADDR=00:0C:29:06:1B:37        //对应设备的MAC地址
TYPE=Ethernet               //接口类型,以太网、令牌环网等
UUID=eeff4c0e-9f73-4e08-b8ae-ede6eb054c32       //设备唯一标识
ONBOOT=no       //系统引导时是否加载此设备
NM_CONTROLLED=yes   //NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”
BOOTPROTO=dhcp      //激活此设备时地址配置协议,dhcp,static,none

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

[root@localhost test-scripts]# ip addr add 192.168.9.111/24 dev eth0 label eth0:3
[root@localhost test-scripts]# ifconfig eth0:1 192.168.9.110/24
[root@localhost test-scripts]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:06:1B:37  
          inet addr:192.168.9.19  Bcast:192.168.9.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe06:1b37/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:529771 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42404 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:35999514 (34.3 MiB)  TX bytes:3880544 (3.7 MiB)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:06:1B:37  
          inet addr:192.168.9.100  Bcast:192.168.9.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:06:1B:37  
          inet addr:192.168.9.110  Bcast:192.168.9.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:3    Link encap:Ethernet  HWaddr 00:0C:29:06:1B:37  
          inet addr:192.168.9.111  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

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

  • ifconfig命令:接口及地址查看和管理

    [root@localhost test-scripts]# ifconfig -a    //显示所有接口,包括inactive状态的接口
    [root@localhost test-scripts]# ifconfig eth0 192.168.9.22/24        //配置设备接口IP
    [root@localhost test-scripts]# ifconfig eth0 up/down    //启用、禁用设备接口
    注意此命令是立即送往内核中TCP/IP协议栈,并生效
  • route命令:查看和配置网络路由

    路由条目类型:
    主机路由:目标地址为单个IP;
    网络路由:目标地址为IP网络;
    默认路由:目标为任意网络,0.0.0.0/0.0.0.0
    route add -net  10.0.0.0/8  gw  192.168.10.1  dev  eth1 //eth1网络设备10.0.0.0网段通过网关192.168.10.1转发出去
    route add  -net  0.0.0.0/0.0.0.0  gw 192.168.10.1   //任何网段都从192.168.10.1转发出去 
    route add  default  gw 192.168.10.1  
    route  del  -net  10.0.0.0/8  gw 192.168.10.1   //删除本条路由
    route -n   //查看主机路由
  • netstat命令:查看网络连接和路由

    netstat -rn     //显示内核路由表
    -u:UDP相关的连接
    -w:raw socket相关的连接
    -l:处于监听状态的连接
    -a:所有状态
    -n:以数字格式显示IP和Port;
    -e:扩展格式
    -p:显示相关的进程及PID;
    常用格式:-tan,  -uan,  -tnl,  -unl,  -tunlp
    [root@localhost test-scripts]# netstat -tnlp        //显示IP地址对应的监听端口上服务程序
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
    tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1643/rpcbind        
    tcp        0      0 0.0.0.0:48434               0.0.0.0:*                   LISTEN      1700/rpc.statd      
    tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2001/sshd           
    tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1740/cupsd          
    tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2099/master         
    tcp        0      0 :::45159                    :::*                        LISTEN      1700/rpc.statd      
    tcp        0      0 :::111                      :::*                        LISTEN      1643/rpcbind        
    tcp        0      0 :::22                       :::*                        LISTEN      2001/sshd           
    tcp        0      0 ::1:631                     :::*                        LISTEN      1740/cupsd          
    tcp        0      0 ::1:25                      :::*                        LISTEN      2099/master

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

  • rpm:rehat package manager,红帽系列的包管理器,功能包括:安装、升级、卸载、查询、校验和数据库维护

    rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]
    OPTIONS:安装:-i, --install
            升级:-U, --update, -F, --freshen
            卸载:-e, --erase
            查询:-q, --query
            校验:-V, --verify
    安装:# rpm -ivh PACKAGE_FILE
            -v:安装的详细信息
            -h:hash marks输出进度条;每个#表示2%的进度
    升级:# rpm -Uvh|-Fvh PACKAGE_FILE
    卸载:# rpm -e --allmatches --nodeps --test PACKAGE_FILE
            --allmatches:卸载所有匹配指定名称的程序包的各版本;
            --nodeps:忽略依赖关系
            --test:测试卸载,dry run模式
    查询:# rpm -ql|-qi|-qf|-qc|-qd|-qpi|-qpl|-qpc
            -l, --list:程序安装生成的所有文件列表;
            -i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
            -c, --configfiles:查询指定的程序包提供的配置文件;
            -d, --docfiles:查询指定的程序包提供的文档;
            --provides:列出指定的程序包提供的所有的能力
            -R, --requires:查询指定的程序包的依赖关系;
            --scripts:查看程序包自带的脚本片断;
    校验:# rpm -V PACKAGE_FILE
            如果校验失败,返回以下结果:
            S=大小改变
            M=权限改变
            5=MD5改变
            L=连接改变
            D=设备改变
            U=用户改变
            G=组改变
            T=日期和时间改变
            missing=文件丢失
    数据库维护:/var/lib/rpm  通过此处数据库进行查询操作
        # rpm --initdb|--rebuilddb
            --initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
            --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

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

1、查看光盘是否挂载
[root@localhost yum.repos.d]# mount
/dev/sr0 on /media/CentOS_6.8_Final type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=500,gid=500,iocharset=utf8,mode=0400,dmode=0500)
2、在/etc/yum.repos.d目录下创建一个cdrom.repo的文件
[root@localhost yum.repos.d]# touch cdrom.repo
3、vim cdrom.repo
[cdrom]
name=CentOS6cdrom
baseurl=file:///media/CentOS_6.8_Final
gpgcheck=0
enabled=1
4、清楚本地缓存,建立元数据缓存
yum clean all
yum makecache

cdrom                                                        | 4.0 kB     00:00 ... 
cdrom/group_gz                                               | 226 kB     00:00 ... 
cdrom/filelists_db                                           | 6.3 MB     00:00 ... 
cdrom/primary_db                                             | 4.7 MB     00:00 ... 
cdrom/other_db                                               | 2.8 MB     00:00 ... 
extras                                                       | 3.4 kB     00:00

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

   (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;
   (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;
   (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;
   (4) 分别统计S开头和K开头的文件各有多少;
#!/bin/bash
#
declare -i i=0
declare -i j=0

for file1 in `ls /etc/rc.d/rc3.d |egrep "^K"` ;do
        echo "$file1 stop"
        let i++
done

for file2 in `ls /etc/rc.d/rc3.d |egrep "^S"` ;do
        echo "$file2 start"
        let j++
done
echo "k top file sum is $i"
echo "s top file sum is $j"

[root@localhost test-scripts]# bash file.sh
K01smartd stop
K02oddjobd stop
K05wdaemon stop
K10psacct stop
K10saslauthd stop
K15htcacheclean stop
K15httpd stop
K30spice-vdagentd stop
K50dnsmasq stop
K60nfs stop
K61nfs-rdma stop
K69rpcsvcgssd stop
K73winbind stop
K75ntpdate stop
K75quota_nld stop
K76ypbind stop
K84wpa_supplicant stop
K87restorecond stop
K88sssd stop
K89netconsole stop
K89rdisc stop
K92pppoe-server stop
K95firstboot stop
K95rdma stop
K99rngd stop
S01sysstat start
S02lvm2-monitor start
S08ip6tables start
S08iptables start
S10network start
S11auditd start
S11portreserve start
S12rsyslog start
S13cpuspeed start
S13irqbalance start
S13rpcbind start
S15mdmonitor start
S22messagebus start
S23NetworkManager start
S24nfslock start
S24rpcgssd start
S25blk-availability start
S25cups start
S25netfs start
S26acpid start
S26haldaemon start
S26udev-post start
S28autofs start
S50kdump start
S55sshd start
S58ntpd start
S80postfix start
S82abrt-ccpp start
S82abrtd start
S90crond start
S95atd start
S99certmonger start
S99local start
k top file sum is 25
s top file sum is 33

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

   (1) 脚本能接受用户名作为参数;
   (2) 计算此些用户的ID之和;
#!/bin/bash
#
declare -i userid=0
declare -i idsum=0
declare -a username
read -p "please input username: " -a username
argument=${#username[*]}
if [ $argument -eq 0 ];then
        echo "no username,please agruments"
fi
for i in `seq 0  $[${#username[*]}-1]`;do
        userid=`id -u ${username[$i]}`
        let idsum+=userid
done
echo "idsum is $idsum"

[root@localhost test-scripts]# bash useradd.sh 
please input username: xuc apache magedu
idsum is 1049
[root@localhost test-scripts]# bash useradd.sh 
please input username: 
no username,please agruments
idsum is 0

14、写一个脚本

   (1) 传递一些目录给此脚本;
   (2) 逐个显示每个目录的所有一级文件或子目录的内容类型;
   (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;
#!/bin/bash
#

declare -i dfile=0
declare -i cfile=0
declare -i bfile=0
declare -i lfile=0
declare -i pfile=0
declare -i sfile=0
declare -i cmnfile=0

if [ $# -lt 1 ];then
        echo "please input arguments"
exit 1
fi
dfile=$(ls -l "$@" |egrep ^d |awk '{print $NF}'|wc -l)
cfile=$(ls -l "$@" |egrep ^c |awk '{print $NF}'|wc -l)
bfile=$(ls -l "$@" |egrep ^b |awk '{print $NF}'|wc -l)
lfile=$(ls -l "$@" |egrep ^l |awk '{print $NF}'|wc -l)
pfile=$(ls -l "$@" |egrep ^p |awk '{print $NF}'|wc -l)
sfile=$(ls -l "$@" |egrep ^s |awk '{print $NF}'|wc -l)
cmnfile=$(ls -l "$@" |egrep ^- |awk '{print $NF}'|wc -l)

ls -l "$@"
echo "The directory file total : $dfile"
echo "The charactor file total : $cfile"
echo "The block file total : $bfile"
echo "The link file total : $lfile"
echo "The FIFO file total : $pfile"
echo "The socket file total : $sfile"
echo "The common file total : $cmnfile"

....省略文件输出
The directory file total : 31
The charactor file total : 124
The block file total : 40
The link file total : 15
The FIFO file total : 0
The socket file total : 1
The common file total : 0

15、写一个脚本

  通过命令行传递一个参数给脚本,参数为用户名
  如果用户的id号大于等于500,则显示此用户为普通用户;

#!/bin.bash
#
id -u $1 & >/dev/null

if [ $? -eq 0 ];then
        if [ `id -u $1` -lt 500 ];then
                echo "$1 is system user"
        else
                echo "$1 is common user"
        fi
else
        echo "user is not exist"
fi
[root@localhost test-scripts]# bash usertype.sh 123
user is not exist
[root@localhost test-scripts]# bash usertype.sh xuc
xuc is common user
[root@localhost test-scripts]# bash usertype.sh root
root is system user

16、写一个脚本

   (1) 添加10用户user1-user10;密码同用户名;
   (2) 用户不存在时才添加;存在时则跳过;
   (3) 最后显示本次共添加了多少用户;
#!/bin/bash
#
declare -i j=0
for i in {1..10};do
        useradd use$i &>/dev/null
        if [ $? -eq 0 ];then
                let j++
                echo "user$1" |passwd --stdin user$i &>/dev/null
        else
                echo "user$i is exist"  
        fi
done
echo "adduser total is $j"

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

如6题

18、打印九九乘法表;

#!/bin/bash
#

for j in {1..9};do
        for i in `seq 1 $j`;do
                echo -n -e "${i}X${j}=$[${i}*${j}]\t"
        done
        echo
done
    [root@localhost test-scripts]# bash 99.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

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

(0)
N22_熊宝N22_熊宝
上一篇 2016-11-14
下一篇 2016-11-14

相关推荐

  • (总结)MySQL自带的性能压力测试工具mysqlslap详解

    PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用。其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的。下面举例说说。mysqlslap是从5.1.4版开始的一个MySQL官方提供的压力测试工具。通过模拟多个并发客户端访问MySQL来执行压力测试,同时详细的提供了“高负荷攻击MySQL”的数据性能报告。并且能很好的对比…

    Linux干货 2015-02-10
  • 包管理一:配置本地ISO的yum源

    故事背景:网上找了一个软件,但是这个软件需要依赖光盘上面的基础包,但是这个服务器又不能上网,怎么办? 方法:这里推荐配置本地ISO的yum源,然后yum localinstall xxx.rpm 1、yum的配置文件说明 配置文件: /etc/yum.conf:为所有仓库提供公共配置 /etc/yum.repos.d/*.repo:为仓库的指向提供配置 仓库…

    Linux干货 2016-01-05
  • 关于 LVM 逻辑卷管理

                  逻辑卷管理 (LVM)    允许对卷进行方便操作的抽象层,包括从新设定文件系统的大小   允许在多个设备间重新组织文件系统将设备指定为物理卷用一个或者多个物理卷来创建一个卷组物理卷是用固定大小的物理区…

    系统运维 2016-09-02
  • 排名三剑客的VIM _正确的打开姿势!

    vim程序编辑器        vi:是老式的文字处理器。     vi的使用:【vi分为3种模式一般模式、编辑模式、命令模式】         一般模式:   vi打开文件就直接进入到了一…

    Linux干货 2017-04-10
  • N26-第九周

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # # # NUM1=0 NUM2=0 for i in `cut -d: -f7 /etc/passwd` ;do if [[ “$i” = ‘/bin/bash…

    Linux干货 2017-03-15

评论列表(1条)

  • luoweiro
    luoweiro 2016-11-29 22:58

    第10题判断用户存在一般使用id 看的,不是要useradd添加返回错误来判断