Linux做业8

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

  集线器:集线器工做在OSI模型中的物理层,基于广播方式工做,用于放大和广播数据比特,如今只在特定网络中应用,好比须要对网络抓包的时;
node

  网桥和二层交换机:二层交换机属于网桥,网桥和二层交换机工做在OSI模型中的数据链路层,基于MAC端口表链接链接多台主机或二层网络,可以对数据帧进行存储转发和校验,并可以隔离冲突域。
缓存

  三层交换机:工做在OSI模型中第三层网络层,是具备部分路由功能的交换机,应用在大型网络中实现数据包的快速交换和转发;bash

 路由器:三层交换机工做在OSI模型中的网络层,用于连接多个网络(能够是不一样接口,如串口、光纤、电话线、双绞线等),在互联网中基于路由协议实现数据包的路由功能。网络


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

    IPv4共分为如下五类:socket


第一段范围(二进制和十进制) 有效IP范围 默认子网掩码 网络数 每网络主机数 私网地址
A类 0 000 0000 – 0 111 1111
0 – 127
1.0.0.1 – 126.255.255.254
0.0.0.0表明任意网络
127.X.X.X为本地回环地址
255.0.0.0 126 2^24-2 10.0.0.0/8
B类 10 00 0000 – 10 11 1111
127 – 191
128.0.0.1 – 191.255.255.254 255.255.0.0 2^14 2^16-2 172.16.0.0/16 – 172.31.0.0/16
C类 110 0 0000 – 110 1 1111
192 - 223
192.0.0.1 – 223.255.255.254 255.255.255.0 2^21 2^8-2 192.168.0.0/24 – 192.168.255.0/24
D类 1110 0000 – 1110 1111
224 – 239
224.0.0.1 – 239.255.255.254 D类地址不分网络和主机,用做组播
E类 1111 0000 – 1111 1111
240 – 255
240.0.0.1 – 255.255.255.254 用于科学研究

    子网掩码:子网掩码用来区分IPv4地址的网络和主机段,并进而判断多个IP是否处与同一网络。判断方法:子网掩码与IP按位进行“与”运算后,若是网络段相同则说明处于同一网络中。
tcp

    子网掩码与IP相似,也是由32位二进制组成,其表现形式有两种,一种是和IP相似以点分十进制的方法表示,如:255.255.0.0;另外一种为在IP地址后紧跟“/NUM”,NUM为掩码的十进制表示法,如:172.16.0.1/16。   ide


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

    OSI参考模型:

        应用层(第7层,Application layer):为计算机与用户交互的接口,好比Telnet、SMTP、FTP、HTTP等协议;            

        表示层(第6层,Presentation layer):为应用层提供数据,并负责数据的转换和格式化等。好比数据是否须要加密,数据的编码格式(ASCII、JPEG)等;

        会话层(第5层,Session layer):负责保证应用程序间数据的独立性。

        传输层(第4层,Transport layer):未来自会话层的数据分段,并重组为数据流。主要提供了两个通讯协议TCP(可靠)和UDP(不可靠)。PDU为Segment;

        网络层(第3层,Network layer):为数据包提供路由选择服务,主要协议有IP、ICMP。PDU为Packet。涉及的物理设备主要是路由器;

        数据链路层(第2层,Data Link layer):负责未来自网络层的数据包转换为比特流,以便于物理层进行传输,也提供了错误发现的服务,但不纠正。使用MAC地址进行通讯。PDU为Frame,涉及的设备有交换机;

        物理层(第1层,Physical layer):发送和接收比特流。PDU为bit。涉及的设备有集线器、线缆。

       

    TCP/IP模型:由如下5层组成,其中应用层称为资源子网,传输层、互联网层、数据链路层和物理层称为通讯子网,与OSI模型对应。

        应用层(第5层,Application layer):对应OSI模型中的应用层、表示层和会话层

        传输层(第4层,Transport layer)

        互联网层(第3层,Internet layer)

        数据链路层(第2层,Data Link layer)

        物理层(第1层,Physical layer)       

        

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

 将Linux主机接入到TCP/IP网络中须要为主机配置IP地址、网关和DNS等项目。

 1). 修改/添加IP地址:

  管理网络接口的命令有两个分别为ifconfig和ip,推荐使用ip命令进行配置。注意,使用命令配置的网卡参数当即临时生效:

  ipconfig命令,当即临时生效:

   ifconfig [interface]//显示指定网络接口的信息,不加[interface]则显示全部活动状态的网络接口信息

    # ifconfig -a//显示全部网络接口的信息,包括非活动状态的接口信息

    # ifconfig IFACE [up|down]//

   ifconfig interface [aftype] options | address ...

    # ifconfig IFACE IP/mask [up]

    # ifconfig IFACE IP netmask MASK [up]

    # ifconfig IFACE IP[/PREFIXLEN] [up]


  使用ifconfig为网卡配置并查看IP地址的方法:

   wKiom1fo3aeBcunCAAAeRVInO5A880.png

   或

   wKiom1fo3aegRW3cAAAcu-EkM6I865.png

  

  ip命令,当即临时生效:


   ip address - protocol address management

    ip addr { add | del } IFADDR dev STRING [label LABEL]

    IFADDR=IP/PREFIXLEN

     [label LABEL]:添加地址时指明网卡别名

     [scope {global|link|host}]:指明做用域

      global: 全局可用;

      link: 仅连接可用;

      host: 本机可用;

     [broadcast ADDRESS]:指明广播地址

   ip address show - look at protocol addresses

    [dev DEVICE]//检查指定设备上的IP地址

    [label PATTERN]//检查指定标签设备的IP地址

    [primary and secondary]//检查指定设备上的主或辅助IP地址

   使用ip命令不能直接替换网卡的IP地址,能够先删除设备上的IP再添加IP,以下:

    wKiom1fo75vhhznZAAAl9RQ7O2U463.png


 2). 修改网关或路由:

  添加/修改网关或路由可以使用route或ip route命令:

   使用route命令添加网关/路由:

    查看:route -n

     Flags:Possible flags include

              U (route is up)

              H (target is a host)

              G (use gateway)

              R (reinstate route for dynamic routing)

              D (dynamically installed by daemon or redirect)

              M (modified from routing daemon or redirect)

              A (installed by addrconf)

              C (cache entry)

              !  (reject route)   

    添加: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]


    添加网关为192.168.1.254:

    wKioL1fqOniwYv5VAABIJv8DT6Q109.png    


   使用ip命令添加网关/路由: 

    查看路由条目:ip route { list | show } 

     添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP

      TARGET:

       主机路由:IP

       网络路由:NETWORK/MASK

    添加网关:ip route add defalt via GW dev IFACE     

    删除路由:ip route del TARGET

      删除网关:ip route del default

  添加网关为192.168.1.254:

   wKiom1fqPgqg7liIAABGM6duQWA478.png


 3). 添加/修改DNS:

  DNS的添加/修改需经过配置文件/etc/resolv.conf,Linux最多能够添加3个DNS。

   /etc/resolv.conf格式:

    nameserver DNS_SERVER_IP1

    nameserver DNS_SERVER_IP2

    nameserver DNS_SERVER_IP3

  添加DNS为:192.168.0.三、202.106.0.20、8.8.8.8

  wKioL1fqQQ3iq_ICAAA7Cg0iVfs752.png


 配置网卡信息永久生效:

  修改网卡的配置文件:

# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
HWADDR="08:00:27:b4:9f:bf"
TYPE="Ethernet"
BOOTPROTO="static"
NAME="enp0s3"
UUID="1ad1abf6-983f-4727-bc53-ca64a35327f6"
ONBOOT="yes"
IPADDR="192.168.1.92"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.254"
DNS1="192.168.0.3"
DNS2="202.106.0.20"
DNS3="8.8.8.8"
NM_CONTROLLED="no"

 验证结果:

 wKioL1frhWqAmQI0AACz29PHe-U880.png



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

 为Linux主机配置网络信息的方式有两种,一种为静态指定(当即临时生效)另外一种为使用DHCP协议自动获取网络信息,详细方法以下:

  静态指定:  

   使用命令进行配置,当即临时生效:

   添加、修改IP和子网掩码:

    ifconfig:    

[root@C3 network-scripts]# ifconfig enp0s3:1 192.168.1.208/24 up  #为虚拟网卡enp0s3:1指定IP为:192.168.1.208,子网掩码为:255.255.255.0,并激活该网卡
[root@C3 network-scripts]# ifconfig enp0s3:1    #查看虚拟网卡信息
enp0s3:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.208  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 08:00:27:b4:9f:bf  txqueuelen 1000  (Ethernet)

    ip:

[root@C3 network-scripts]# ip addr add 192.168.1.208/24 dev enp0s3 label 'enp0s3:1'        #建立一块虚拟网卡命名为enp0s3:1,指定IP为:192.168.1.208,子网掩码为:255.255.255.0
[root@C3 network-scripts]# ip addr show dev enp0s3        #查看虚拟网卡信息
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b4:9f:bf brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.61/24 brd 192.168.1.255 scope global dynamic enp0s3
       valid_lft 42122sec preferred_lft 42122sec
    inet 192.168.1.209/24 scope global secondary enp0s3:0
       valid_lft forever preferred_lft forever
    inet 192.168.1.208/24 scope global secondary enp0s3:1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feb4:9fbf/64 scope link
       valid_lft forever preferred_lft forever

    添加修改路由:    

    route:

[root@C3 network-scripts]# route del default
[root@C3 network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.3     192.168.1.254   255.255.255.255 UGH   100    0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@C3 network-scripts]# route add default gw 192.168.1.254        #添加默认网关为192.168.1.254
[root@C3 network-scripts]# route -n        #查看路由信息
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.254   0.0.0.0         UG    0      0        0 enp0s3
192.168.0.3     192.168.1.254   255.255.255.255 UGH   100    0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

    ip:

[root@C3 network-scripts]# ip route show
192.168.0.3 via 192.168.1.254 dev enp0s3  proto dhcp  metric 100
192.168.1.0/24 dev enp0s3  proto kernel  scope link  src 192.168.1.61  metric 100
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1
[root@C3 network-scripts]# ip route add default via 192.168.1.254 dev enp0s3    #添加默认网关为192.168.1.254
[root@C3 network-scripts]# ip route show        #查看路由信息
default via 192.168.1.254 dev enp0s3
192.168.0.3 via 192.168.1.254 dev enp0s3  proto dhcp  metric 100
192.168.1.0/24 dev enp0s3  proto kernel  scope link  src 192.168.1.61  metric 100
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1
[root@C3 network-scripts]# route -n        #查看路由信息
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.254   0.0.0.0         UG    0      0        0 enp0s3
192.168.0.3     192.168.1.254   255.255.255.255 UGH   100    0        0 enp0s3
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

    修改配置文件:

# cat ifcfg-enp0s3
HWADDR=08:00:27:B4:9F:BF
NAME=enp0s3
UUID=480ace9a-9c89-470f-8b5f-b124bb13607d
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.91
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=192.168.0.3
DNS2=202.106.0.20


  动态分配:

   修改配置文件(/etc/sysconfig/network-scripts/ifcfg-NIC_NAME)使用DHCP协议自动获取IP、网关和DNS等信息:

# cat ifcfg-enp0s3
HWADDR=08:00:27:B4:9F:BF
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp0s3
UUID=480ace9a-9c89-470f-8b5f-b124bb13607d
ONBOOT=yes


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

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

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

#!/bin/bash
#
declare -i i=1
net='192.168.1'
while [ $i -le 254 ]; do
    if $(ping -n -c 1 -w 1  $net.$i &> /dev/null ); then
        echo -e "\033[32m $net.$i is online. \033[0m"
    else
        echo -e "\033[31m $net.$i is offline. \033[0m"
    fi
    let i++
done

 结果:

wKiom1fs5r6jq09BAAAs9xtszuQ860.png

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

  网卡配置文件 :/etc/sysconfig/network-scripts/ifcfg-IFACE

HWADDR=08:00:27:B4:9F:BF    #网卡的MAC地址;
TYPE=Ethernet                           #网卡类型,常见的有Ethernet、Bridge;
BOOTPROTO=static                    #网卡在激活时IP地址的获取协议,有dhcp、static、none和bootp;
PEERDNS=no        #当BOOTPROTO为dhcp时,是否容许DHCP所分配的DNS覆盖/etc/resolv.conf;
NAME=enp0s3        #网卡名称
UUID=480ace9a-9c89-470f-8b5f-b124bb13607d        #网卡的惟一标示
ONBOOT=yes            #OS在引导时是否激活此设备;
IPADDR=192.168.1.71        #网卡的主IP地址;
PREFIX=24        #子网掩码长度,也可写为NETMASK=255.255.255.0
GATEWAY=192.168.1.1       #默认网关; 
DNS1=202.106.0.20        #第一个DNS,若与/etc/resolv.conf冲突,则以此处为主;
DNS2=8.8.8.8        #备用DNS
NM_CONTROLLED        #NM为NetworkManager的简写,指定网卡是否接受NetworkManager的控制;    
USERCTL=no        #是否容许精通用户控制此网卡


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

  使用ifconfig命令(当即临时生效):    

[root@C1 ~]# ifconfig enp0s3:0 192.168.1.81/24 up    #新虚拟网卡名称为enp0s3:0,IP为192.168.1.81/24
[root@C1 ~]# 
[root@C1 ~]# ifconfig enp0s3:0        #查看新虚拟网IP
enp0s3:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.81  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 08:00:27:a5:19:25  txqueuelen 1000  (Ethernet)

  使用ip命令(当即临时生效):  

[root@C1 ~]# ip addr add 192.168.1.82/24 dev enp0s3 label 'enp0s3:1'        #新网卡名为enp0s3:1,IP为192.168.1.82/24
[root@C1 ~]# 
[root@C1 ~]# ip addr show dev enp0s3        #检查新虚拟网卡信息
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:a5:19:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.71/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.1.81/24 brd 192.168.1.255 scope global secondary enp0s3:0
       valid_lft forever preferred_lft forever
    inet 192.168.1.82/24 scope global secondary enp0s3:1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fea5:1925/64 scope link 
       valid_lft forever preferred_lft forever

  使用nmcli命令(当即永久生效): 

[root@C1 ~]# nmcli conn modify enp0s3 +ipv4.addresses 192.168.1.83/24        #为enp0s3网卡添加一个IP地址,该IP为192.168.1.83/24 
[root@C1 ~]# nmcli conn down enp0s3; nmcli conn up enp0s3        #重启网卡使配置生效;
Connection 'enp0s3' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@C1 ~]# nmcli dev show enp0s3        #检查结果
GENERAL.DEVICE:                         enp0s3
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:A5:19:25
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     enp0s3
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.1.71/24
IP4.ADDRESS[2]:                         192.168.1.83/24        #此处为新添加的IP
IP4.GATEWAY:                            192.168.1.1
IP4.DNS[1]:                             202.106.0.20
IP4.DNS[2]:                             8.8.8.8
IP6.ADDRESS[1]:                         fe80::a00:27ff:fea5:1925/64
IP6.GATEWAY:                            
# cat ifcfg-enp0s3        #查看网卡的配置文件
HWADDR=08:00:27:A5:19:25
TYPE="Ethernet"
NAME="enp0s3"
UUID="1ad1abf6-983f-4727-bc53-ca64a35327f6"
ONBOOT="yes"
BOOTPROTO="none"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
DNS1=202.106.0.20
DNS2=8.8.8.8
IPADDR=192.168.1.71
PREFIX=24
IPADDR1=192.168.1.83        #新IP已写入配置文件中
PREFIX1=24
GATEWAY=192.168.1.1

  修改网卡配置文件(永久有效):  

[root@C1 network-scripts]# cat ifcfg-enp0s3 
HWADDR=08:00:27:A5:19:25
TYPE="Ethernet"
NAME="enp0s3"
UUID="1ad1abf6-983f-4727-bc53-ca64a35327f6"
ONBOOT="yes"
BOOTPROTO="none"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
DNS1=202.106.0.20
DNS2=8.8.8.8
IPADDR0=192.168.1.71
IPADDR1=192.168.1.81        #在同一文件中指定多个IP时须要使用IPADDR#来取分,#为IP标号
PREFIX0=24
PREFIX1=24        #同IPADDR,并与同标号的IP绑定掩码;
GATEWAY=192.168.1.1
[root@C1 network-scripts]# service network restart        #重启网络服务
Restarting network (via systemctl):                        [  肯定  ]
[root@C1 network-scripts]# ip addr show dev enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:a5:19:25 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.71/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.1.81/24 brd 192.168.1.255 scope global secondary enp0s3        #新IP已生效
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fea5:1925/64 scope link 
       valid_lft forever preferred_lft forever


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

 配置类:

  ifconfig、ip、route、nmcli参见第4题和第8题  

 监控类:

  netstat:显示网络会话、路由表和网络统计等信息。

  显示网络链接:

   netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]]  [--program|-p]

    -t: tcp协议相关

    -u: udp协议相关

    -w: raw socket相关

    -l: 处于监听状态

    -a: 全部状态

    -n: 以数字显示IP和端口;

    -e:扩展格式

    -p: 显示相关进程及PID

   经常使用组合:

    -tan, -uan, -tnl, -unl, -tunlpe

    wKioL1ftx9Pw361PAACth_vp0PU363.png

   显示路由表:

    netstat  {--route|-r} [--numeric|-n]

     -r: 显示内核路由表

     -n: 数字格式

    wKioL1ftyO7T1AL7AAAxj3f1tnM949.png

   显示接口统计数据:

    netstat  {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] 

     -i:显示全部网卡的统计信息;

     -I=IFACE:显示指定网卡的系统信息;

    wKioL1ftyeaBxyeoAABNJAxX924933.png


  ss命令:

   格式:ss [OPTION]... [FILTER]

    选项:

     -t: tcp协议相关

     -u: udp协议相关

     -w: 裸套接字相关

     -x:unix sock相关

     -l: listen状态的链接

     -a: 全部

     -n: 数字格式

     -p: 相关的程序及PID

     -e: 扩展的信息

     -m:内存用量

     -o:计时器信息

   EXPRESSION:

    ['( dport = :TCPPORT [or sport = :ssh] )']

    wKiom1ft7gSihDi1AADtGRrnzrY033.png

    

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

 CentOS/Redhat系Linux操做系统可用的软件包管理工具备rpm和yum两种,其中yum是rpm的一个前端工具,是基于rpm的,不可独立存在。

 rpm工具:

  rpm的通用选项:

    --quiet: 静默模式;

    -v: verbose;

    -vv: 更为详细的verbose;

    -h: 以#显示程序包管理执行进度;每一个#表示2%的进度

  安装软件:

   rpm {-i|--install} [install-options] PACKAGE_FILE ...   

   [install-options]

    --test: 测试安装,但不真正执行安装过程;dry run模式;

    --nodeps:忽略依赖关系;

    --replacepkgs: 从新安装;

    --nosignature: 不检查来源合法性;

    --nodigest:不检查包完整性;

    --noscipts:不执行程序包脚本片段;

     %pre: 安装前脚本; --nopre

     %post: 安装后脚本; --nopost

     %preun: 卸载前脚本; --nopreun

     %postun: 卸载后脚本;  --nopostun

   wKioL1ft9u3zfYTuAAAl0BZN_bs524.png

  升级软件:   

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

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

    upgrage:若是已安装了旧版程序包,则“升级”;若是未安装旧版程序包,则“安装”;

    freeshen:若是已安装了旧版程序包,则“升级”;若是未安装旧版程序包,则不执行升级操做;

    rpm -Uvh PACKAGE_FILE ...

    rpm -Fvh PACKAGE_FILE ...

    --oldpackage:降级;

    --force: 强行升级;

   wKioL1ft-GiRBlrBAAAmu4Z7RvI979.png

  卸载软件:  

   rpm {-e|--erase} [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

    -e|--erase:卸载软件包

    --nodeps:卸载时忽略依赖关系;

    --test:测试卸载,并不真正卸载;

    --noscripts:卸载时不执行程序包脚本片段;

   wKiom1ft_nSjRsFDAAAjVPESoAM697.png

 yum工具:

  yum命令的用法:

   yum [options] [command] [package ...]

   Options:

    -v, --verbose:verbose operation

    -y, --assumeyes:交互时所有回答'yes'

    --enablerepo=[repo]:临时启用一个或多个仓库,支持统配符;

    --disablerepo=[repo]:临时禁用一个或多个仓库,支持统配符;

       

  安装软件:

   install package1 [package2] [...]

   reinstall package1 [package2] [...]  (从新安装)

   wKioL1fuANXhbYjoAADAkGwnGkE996.png

  升级软件: 

  update [package1] [package2] [...]

  downgrade package1 [package2] [...] (降级)

  wKioL1fuAfbxNf2kAABNLp4MMkg565.png

  卸载软件:

  remove | erase package1 [package2] [...]

  wKiom1fuA1ziH1LfAACps4k0qsU587.png


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

 1).挂载光盘,并使光盘开机自动挂载;

# grep iso9660 /etc/fstab
/dev/sr1        /media/CentOS7          iso9660 defaults,ro,loop        0       0

 2).建立光盘仓库配置文件;

# cat /etc/yum.repos.d/CentOS-Media.repo
[CentOS7-Media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS7
enabled=1
gpgcheck=1
gpgkey=file:///media/CentOS7/RPM-GPG-KEY-CentOS-7

 刷新缓存,检查是否可用:

  wKioL1fuBWejsQv5AABaCuqdwpg631.png


十二、写一个脚本,完成如下功能

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

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

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

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

#!/bin/bash
#
declare -i sumS=0
declare -i sumK=0
for file in $(ls /etc/rc.d/rc3.d/ | grep '^[K|S].*'); do
    if echo $file | grep '^S' &> /dev/null; then
        echo "$file start"
        let sumK++
    else
        echo "$file stop"
        let sumS++
    fi
done
echo -e "K files: $sumK\nS file: $sumS"

  结果:

  wKioL1fuDTLBYT8GAAAVhdsdwCo579.png

1三、写一个脚本,完成如下功能

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

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

#!/bin/bash
#
declare -i countUID=0
if [ $# -eq 0 ]; then
    echo "Usage: $0 <USERNAME1> <USERNAME2>..."
    exit 1
fi

for user in $@; do
    if id $user &> /dev/null ; then
        echo "$user UID: $(id -u $user)"
        let countUID+=$(id -u $user)
    else
        echo "$user not existed."
    fi
done
echo "Sum UID: $countUID"

  结果:

  wKiom1fuFIfA4s44AABFCcDzV3o456.png

1四、写一个脚本

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

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

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

#/bin/bash
#
declare -i dirCount=0
declare -i blkCount=0
declare -i chaCount=0
declare -i regCount=0
declare -i symCount=0
declare -i pipCount=0
declare -i socCount=0
declare -i othCount=0
for dir in $@; do
    if [ -d $dir ]; then
        cd $dir
       for file in $(ls .); do
            echo "$(file $file)"
            if [ -d $file ]; then
                let dirCount++
            elif [ -f $file ]; then
                let regCount++
            elif [ -b $file ]; then
                let blkCount++
            elif [ -c $file ]; then
                let chaCount++
            elif [ -L $file ]; then
                let symCount++
            elif [ -p $file ]; then
                let pipCount++
            elif [ -S $file ]; then
                let socCount++
            else
                let othCount++
            fi
       done
    else
       echo "$dir is not directory or not exist."
    fi
done
echo "================================="
echo "Directory: $dirCount"
echo "Block files: $blkCount"
echo "Character files: $chaCount"
echo "Regular files: $regCount"
echo "Symbolic link files: $symCount"
echo "Pipe files: $pipCount"
echo "Socket files: $socCount"
echo "Other files: $othCount"

  结果:

wKiom1fuPaCyG_bSAAB5b49PZgA315.png

1五、写一个脚本

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

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

#!/bin/bash
#
if id $1 &> /dev/null; then
    userID=$(id -u $1)
    echo "$1 UID: $userID"
    if [ $userID -gt 500 ]; then
        echo "$1 is regular user."
    else
        echo "$1 is system user."
    fi
else
    echo "user $! not exist."
fi

  结果:

  wKioL1fuimDjwgWWAAAu8aylgqY284.png

1六、写一个脚本

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

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

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

#!/bin/bash
#
declare -i addedUser=0
for ((i=1;i<=10;i++)); do
    if id user$i &> /dev/null; then
        echo "user$i already existed."
    else
        if useradd user$i &> /dev/null; then
            echo "user$i" | passwd --stdin user$i &> /dev/null
            let addedUser++
            echo "user$i add OK."
        else
            echo "user$i add failed."
        fi
    fi
done
echo -e "=========================\nTotal added user: $addedUser."

  结果:

 wKiom1fuj5LRGoQEAAArstFXm88542.png

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

#!/bin/bash
#
net="192.168.1"
echo "Online IPs:"
for ((i=20;i<=100;i++));do
    ping -n -w 1 -c 1 $net.$i &> /dev/null && echo "$net.$i"
done

  结果:

 wKioL1fukXjjtppQAAAWknevGLE377.png

1八、打印九九乘法表;

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

printMulTab 9

  结果:

  wKioL1fulHDidBDGAABTBcY7Z6I752.png

相关文章
相关标签/搜索