; 第八周作业(网络、bash脚本) | Linux运维部落

第八周作业(网络、bash脚本)

1-3,计算机网络基础博客已总结,简要补充

协议的分层

为了使那些比较复杂的网络协议更加简单化。ISO根据各通信协议的功能将网络体系分成七层。

在这个分层中,下层为上一层提供服务。上下层之间进行交互时所遵循的约定叫做“接口”。同层之间的交互所遵循的约定叫做“协议”

说的更形象一点,两个中国人打电话这个通信。就可以分为两层,同层之间的叫协议,我说汉语,你也说汉语,我跟个韩国人打电话,肯定沟通不了。电话之间也要有协议,我用我的电话打到你的吹风机上也不行吧。我跟电话之间的联系,叫做接口,就是录音、扬声器吧,将声波转化为电磁波,发送给你。

OSI参考模型

每层的功能如下:

通信过程如下:

A对B发一句“早上好”的电子邮件,内容早上好

在应用层加上应用层首部,作用是指明目标地址,发件人为用户A;

到达表示层加上表示层首部,作用将数据从主机特有的格式转化为网络标准传输格式;

到达会话层加上会话层首部,作用是选择采用哪个连接,何种方法传输数据;

到达传输层,传输层作用是保证所传输的数据到达目标地址,如果没有到达则会负责重发;

到达网络层,A到B之间有很多路要走,选择哪一条路是靠网络层

到达数据链路层,数据链路层的作用是,在这些通过传输介质互联的设备之间进行数据处理,将数据转化为0,1的形式。

到达物理层,将数据的0,1转化为电压和脉冲传给B主机的地址,这个地址被称之为MAC地址,也叫物理地址。

然后B主机拿到0,1的数据再经过层层转变,就变为B主机应用层可读的信息。

网络的构成要素

网桥/2层交换机

路由器/3层交换机

网关

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

修改/etc/sysconfig/network-scripts/ifcfg-eth0,添加以下内容
                                BOOTPROTO=static
                                ONBOOT=yes
                                DNS1=10.1.1.254
                                IPADDR=10.1.1.100
                                GATEWAY=10.1.1.254
                                DNS1=10.1.1.254

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

方法一:使用ifconfig或者ip 临时添加网络信息,并使用route命令添加默认网关

     ifconfig IF_NAME IP_ADDR network MASK

例子:ifconfig eth0:1  192.168.0.3

       route add default gw GATEWAY
例子:route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1

方法二:使用修改/etc/sysconfig/network-scripts/ifcfg-IF_NAME文件

    ifcfg-IFACE 配置文件参数:
    DEVICE:此配置文件对应的设备的名称;
    ONBOOT:在系统引导过程中,是否激活此接口;
    UUID:此设备的惟一标识;
    IPV6INIT:是否初始化 IPv6;
    BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有 dhcp、bootp、
    static、none;
    TYPE:接口类型,常见的有 Ethernet, Bridge;
    DNS1:第一 DNS 服务器指向;
    DNS2:备用 DNS 服务器指向;
    DOMAIN:DNS 搜索域;
    IPADDR: IP 地址;
    NETMASK:子网掩码;CentOS 7 支持使用 PREFIX 以长度方式指明子网掩码;
    GATEWAY:默认网关;
    USERCTL:是否允许普通用户控制此设备;
    PEERDNS:如果 BOOTPROTO 的值为“dhcp”,是否允许 dhcp server 分配的 dns 服务器指
    向覆盖本地手动指定的 DNS 服务器指向;默认为允许;
    HWADDR:设备的 MAC 地址;      

方法三:CentOS 7 使用nmtui命令配置网络信息,Centos 7是setup。

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

#!/bin/bash
 echo -e "\033[34m Find the online users. Input 'Ctrl + C' to end script run.\033[0m"
                   for ip in {250..254}; do
                            trap 'echo ; echo "Secrpt stoping by user.."; echo ;exit' INT
                            ping -c 1 -w 1 "172.16.250.$ip" &>/dev/null
                            if [ $? -eq 0 ]; then
                                        echo -e "\033[32m 172.16.250.$ip online \033[0m"
                           else
                                        echo -e "\033[31m $1.$ip time out !!!\033[0m"
                           fi
                  done

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

ifcfg-IFACE 配置文件参数:
        DEVICE:此配置文件对应的设备的名称;
        ONBOOT:在系统引导过程中,是否激活此接口;
        UUID:此设备的惟一标识;
        IPV6INIT:是否初始化 IPv6;
        BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有 dhcp、bootp、
        static、none;
        TYPE:接口类型,常见的有 Ethernet, Bridge;
        DNS1:第一 DNS 服务器指向;
        DNS2:备用 DNS 服务器指向;
        DOMAIN:DNS 搜索域;
        IPADDR: IP 地址;
        NETMASK:子网掩码;CentOS 7 支持使用 PREFIX 以长度方式指明子网掩码;
        GATEWAY:默认网关;
        USERCTL:是否允许普通用户控制此设备;
        PEERDNS:如果 BOOTPROTO 的值为“dhcp”,是否允许 dhcp server 分配的 dns 服务器指
        向覆盖本地手动指定的 DNS 服务器指向;默认为允许;
        HWADDR:设备的 MAC 地址;

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

方法一:ifconfig eth0:1 192.168.1.2 netmask 255.255.255.0
方法二:
      CentOS 6:vim /etc/sysconfig/network-scripts/ifcfg-eth0
                添加  IPADDR1、IPADDR2...
      CentOS 7:vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
                添加  IPADDR1、IPADDR2...

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

 ifconfig 
    常见用法:
        查看网卡信息:ifconfig [interface]
        查看所有网卡信息:ifconifg -a
        开启或关闭网卡:ifconfig IFACE [up|down]
        配置网卡参数:ifconfig interface [aftype] options | address ...
        配置网卡IP地址:
            ifconfig IFACE IP/mask [up]
            ifconfig IFACE IP network MASK

 ip:显示/配置路由,接口,策略路由和隧道
        常见用法:
             网卡添加多一个IP地址,并设置别名为eth0:0
                 ip addr IPADDR/MASK dev eth0 label 'eth0:0'
            显示网卡设备的信息: ip addr show 
            清除IP地址信息:ip addr flush dev interface
            添加路由:ip route add TARGET via GW dev INTERFACE src SOURCE_IP
            删除单条路由: ip route del TARGET 


 route:路由管理命令
            查看路由条目:route -n
            添加路由条目:route add
            route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] if]
            删除路由:route del
            route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


netstat :显示网络连接、路由表、接口数据统计、伪装连接、组播成员关系
    常用选项:
                        -t : 显示TCP协议相关已建立的连接(ESTABLISHED)
                        -u : 显示UDP协议相关已建立的连接(ESTABLISHED)
                        -r : 显示raw socket(裸套接字)相关已建立的连接(ESTABLISHED)
                        -l : 处于监听状态的连接
                        -n : 以数字显示IP和协议端口(默认显示协议名称,如SSH)
                        -a : 显示所有状态的连接
                        -e : 扩展格式
                        -p : 显示相关进程及PID

常用组合:
                        -tan , -uan , -tnl, -unl,-tunlp

ss:网络状态查看工具
常见选项:
    -t : tcp协议相关
    -u : udp协议相关
    -w : 裸套接字相关
    -x : unix sock相关
    -l : listen状态的连接
    -a : 所有
    -n : 数字格式
    -p : 相关的程序及PID
    -e : 扩展的信息
    -m : 内存用量
    -o : 计时器信息
    常用组合:
                        -tan , -tanl , -tanlp , -uan,-tunlp

10、11题见博客

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

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

        for  i in  $(ls /etc/rc.d/rc3.d/  |grep "^K");do
                echo $i.stop
                let sum1+=1
        done

        for  j in  $(ls /etc/rc.d/rc3.d/  |grep "^S");do
                echo $j.start
                let  sum2+=1
        done

        echo   "the number of "K" is  $sum1 "
        echo   "the number of "S" is $sum2 "

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

(1) 脚本能接受用户名作为参数; (2) 计算此些用户的ID之和; #/bin/bash #

        if [ $# -lt 1 ];then
                echo "at least one username"
                exit 0
        fi

        for i in $*;do
                for j in $(id -u $i);do

                        let sum+=$j
                done
                echo "id.$i =  $(id -u $i) "
        done

        echo "sum=$sum"

14、写一个脚本

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

    if [ $# -lt 1 ];then
            echo "at least one file"
            exit 1
    fi

    for i in $*;do
            if [ -b $j ];then
                    echo "$j is block file."
                    let sum1+=1
            elif [ -c $j ];then
                    echo "$j is character file."
                    let sum1+=1
            elif [ -d $j ];then
                    echo "$j is a directory."
                    let sum1+=1
            elif [ -f $j ];then
                    echo "$j is a common file."
                    let sum1+=1
            elif [ -L $j ];then
                    echo "$j is a symbolic link."
                    let sum1+=1
            elif [ -p $j ];then
                    echo "$j is a pipe file."
                    let sum1+=1
            elif [ -S $j ];then
                    echo "$j is a socket file."
                    let sum1+=1
            else    
                    echo "$j is unknown file."
                    let sum1+=1
            fi
    done

                    echo "$sum1"

15-18 前面bash脚本总结过

原创文章,作者:N24_yezi,如若转载,请注明出处:/64078

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 12:13

    赞,针对自己的理解再加上几幅图更能体现知识~最后一个脚本能加个使用说明会更好一点~继续加油~

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达招商  华宇招商  万达主管  万达娱乐直属  万达开户  万达招商QQ  万达娱乐招商  万达注册  万达娱乐主管