2016-10-16 第八周做业

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

网桥 将两个类似的网络链接起来,并对网络数据的流通进行管理。它工做于数据链路层,不但能扩展网络的距离或范围,并且可提升网络的性能、可靠性和安全性。
集线器 主要功能是对接收到的信号进行再生×××放大,以扩大网络的传输距离,同时把全部节点集中在以它为中心的节点上。它工做于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。
二层交换机 工做于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发展已经比较成熟,二层交换机属数据链路层设备,能够识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在本身内部的一个地址表中。
三层交换机 具备部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具备的路由功能也是为这目的服务的,可以作到一次路由,屡次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由肯定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。传统交换技术是在OSI网络标准模型第二层——数据链路层进行操做的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不一样网络情况作到最优网络性能。
路由器 链接因特网中各局域网、广域网的设备,它会根据信道的状况自动选择和设定路由,以最佳路径,按先后顺序发送信号。 路由器是互联网络的枢纽,又称网关设备(Gateway)是用于链接多个逻辑上分开的网络,所谓逻辑网络是表明一个单独的网络或者一个子网。当数据从一个子网传输到另外一个子网时,可经过路由器的路由功能来完成。所以,路由器具备判断网络地址和选择IP路径的功能,它能在多网络互联环境中,创建灵活的链接,可用彻底不一样的数据分组和介质访问方法链接各类子网,路由器只接受源站或其余路由器的信息,属网络层的一种互联设备。路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。

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

IP地址分为:
A类:
    1.0.0.1-126.255.255.254
    网络数:126
    每一个网络中的主机数:2^24-2
    默认子网掩码:255.0.0.0
    私网地址:10.0.0.0/8-10.255.255.255/8
B类:
    128.0.0.1-191.255.255.254
    网络数:2^14
    每一个网络中的主机数:2^16-2
    默认子网掩码:255.255.0.0
    私网地址:172.16.0.0/16-172.31.255.255/16
C类:
    192.0.0.1-223.255.255.254
    网络数:2^21
    每一个网络中的主机数:2^8-2
    默认子网掩码:255.255.255.0
    私网地址:192.168.0.0/24-192.168.255.255/24
    
D类:组播 
    224.0.0.1-239.255.255.254
    
E类:
    240.0.0.1-255.255.255.254
    
子网掩码:将IP地址划分为网络地址与主机地址,与IP地址相与可计算出相应主机的网络地址


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

OSI七层模型从低到高分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;sql


物理层 主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各类传输介质的传输速率等;
数据链路层 定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层一般还提供错误检测和纠正,以确保数据的可靠传输;
网络层 在位于不一样地理位置的网络中的两个主机系统之间提供链接和路径选择;
传输层 定义了一些传输数据的协议和端口号,如www端口为80,ftp端口为20、21等;
会话层 经过传输层创建数据传输的通路;
表示层 可确保一个系统的应用层所发送的信息能够被另外一个系统的应用层读取;
应用层 为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

TCP/IP模型分为四层,从高到低为应用层、传输层、互联网络层、网络接口层;数据库


应用层 应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等;
传输层

在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,而且肯定数据已被送达并接收vim

互联网络层

负责提供基本的数据封包传送功能,让每一块数据包都可以到达目的主机(但不检查是否被正确接收),如网际协议(IP);centos

网络接口层 对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

wKiom1gByaXRDY1zAABcPHchN3k467.png-wh_50

wKioL1gByDqiHP8FAAMC6lT3Rzc356.jpg-wh_50

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


[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
 TYPE=Ethernet
 BOOTPROTO=static
 DEFROUTE=yes
 PEERDNS=yes
 PEERROUTES=yes
 IPV4_FAILURE_FATAL=no
 IPV6INIT=no
 IPV6_AUTOCONF=no
 IPV6_DEFROUTE=no
 IPV6_PEERDNS=no
 IPV6_PEERROUTES=no
 IPV6_FAILURE_FATAL=no
 NAME=eth0
 UUID=e440279d-0e7e-4f90-b961-7f97395f9685
 DEVICE=eth0
 ONBOOT=yes
 IPADDR=192.168.1.125
 NETMASK=255.255.255.0
 GATEWAY=192.168.1.1
 DNS1=202.106.0.20
 DNS2=8.8.8.8


Centos 6安全

[root@localhost ~]# system-config-network-tui bash

wKiom1gB7uCRC8pdAAA×××NDe2M935.png-wh_50

wKioL1gB7uHwp6W-AAAqGMN-tgM339.png-wh_50

wKiom1gB7uHxauAiAAAtwTK-EPc480.png-wh_50

[root@localhost ~]# setup

wKioL1gB76-zlzwcAAAduCKwSy4955.png-wh_50

wKioL1gB773zd3LCAAAUffkNx_w477.png-wh_50

wKiom1gB783iO3AZAAAqGMN-tgM054.png-wh_50

wKioL1gB783hGGmRAAAtwTK-EPc710.png-wh_50

Centos 7

[root@localhost ~]# nmtui-edit 

wKiom1gB8eryWvFmAAAYjUiFQ2w731.png-wh_50

wKiom1gB8erjqf52AABf4TUzJW4154.png-wh_50

从新读取配置文件:#/etc/init.d/network restart或者# service network restart


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

1)配置文件
[root@localhost ~]#/etc/sysconfig/network-script/ifcfg-IFACE
重启网络后永久生效
 
2)命令行
IP
[root@localhost ~]#ifconfig eth0 192.168.1.125 netmask 255.255.255.0
[root@localhost ~]#ip addr add 192.168.1.125/24 dev eth0  
配置完后当即生效,重启后失效
 
路由
[root@localhost ~]#route add default gw 192.168.1.1
[root@localhost ~]# ip route add default via 192.168.12.1 dev eth0
配置完后当即生效,重启后失效
 
3)图形窗口
CentOS 6
[root@localhost ~]#system-config-network-tui
[root@localhost ~]#setup
CentOS 7
[root@localhost ~]# nmtui-edit
重启网络后永久生效


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

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

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

root@localhost bin]# vim ping.sh 
#!/bin/bash
#
export ipaddr=172.16.250.
for i in {1..254};do
  if ping -c 1 -W 1 $ipaddr$i &> /dev/null;then
	 echo -e "\033[0;32;1m"$ipaddr$i is up." \033[0m"
	   else
	 echo -e "\033[0;31;1m"$ipaddr$i is down." \033[0m"
  fi
done
[root@localhost bin]# chmod +x ping.sh

wKioL1gB_SKTYzvjAAAWGK0WBkU929.png-wh_50

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

/etc/sysconfig/network-scripts/ifcfg-IFACE
DEVICE:此配置文件应用到的设备;
HWADDR:对应的设备的MAC地址;
BOOTPROTO:激活此设备时使用的地址配置协议,经常使用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
ONBOOT:在系统引导时是否激活此设备;
TYPE:接口类型;常见有的Ethernet, Bridge;
UUID:设备的唯一标识;
IPADDR:指明IP地址;
NETMASK:子网掩码;
GATEWAY: 默认网关;
DNS1:第一个DNS服务器指向;
DNS2:第二个DNS服务器指向;
USERCTL:普通用户是否可控制此设备;
PEERDNS:若是BOOTPROTO的值为“dhcp”,是否容许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;

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

(1)ip命令
     ip addr { add | del } IFADDR dev STRING

[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:34:99:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.125/24 brd 192.168.1.255 scope global eth0
    inet 172.16.250.2/24 brd 172.16.250.255 scope global eth0:0
    inet6 fe80::20c:29ff:fe34:99fe/64 scope link 
       valid_lft forever preferred_lft forever
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether ea:cb:53:da:d7:c7 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip addr add 192.168.1.131/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:34:99:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.125/24 brd 192.168.1.255 scope global eth0
    inet 172.16.250.2/24 brd 172.16.250.255 scope global eth0:0
    inet 192.168.1.131/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe34:99fe/64 scope link 
       valid_lft forever preferred_lft forever
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether ea:cb:53:da:d7:c7 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]#
(2)ifconfig
	ifconfig IFACE_ALIAS

[root@localhost ~]# ifconfig eth0:1 192.168.1.132/24 up
[root@localhost ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:34:99:fe brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.125/24 brd 192.168.1.255 scope global eth0
    inet 172.16.250.2/24 brd 172.16.250.255 scope global eth0:0
    inet 192.168.1.131/24 scope global secondary eth0
    inet 192.168.1.132/24 brd 192.168.1.255 scope global secondary eth0:1
    inet6 fe80::20c:29ff:fe34:99fe/64 scope link 
       valid_lft forever preferred_lft forever
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
    link/ether ea:cb:53:da:d7:c7 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]#
(3)修改配置文件
首先将/etc/sysconfig/network-scripts/下的ifcfg-eth0文件复制一份,重命名为ifcfg-eth0:0,修改eth0:0
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.16.250.2
NETMASK=255.255.0.0
DNS=202.106.0.20
DNS1=8.8.8.8
IPV6INIT=no
USERCTL=no

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

(1) ifocnfig 接口及地址查看和管理
使用用法:
格式:ifconfig [-v] [-a] [-s] [interface]
选项:
   -a:显示全部网卡信息
   -S 显示接口信息
示例:
查看网卡信息:
[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:34:99:FE  
          inet addr:192.168.1.125  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe34:99fe/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:170335 errors:0 dropped:0 overruns:0 frame:0
          TX packets:44191 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:146923432 (140.1 MiB)  TX bytes:4185346 (3.9 MiB)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:34:99:FE  
          inet addr:172.16.250.2  Bcast:172.16.250.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:34:99:FE  
          inet addr:192.168.1.132  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:58 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:5435 (5.3 KiB)  TX bytes:5435 (5.3 KiB)
(2)netstat 显示网路链接 
格式:netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
选项:
      -t: tcp协议相关链接,链接均有其状态;FSM(Finate state Machine) 
      -u: udp协议相关 -w: raw socket相关 裸套接字 
      -l: 处于监听状态,等待别人链接;不加的l话,正在创建的链接或正在通讯的状态
      -a: 全部状态 -n: 以数字显示IP和端口;
      -e:扩展格式 
      -p: 显示相关进程及PID 
      -r: 显示路由信息
      经常使用选项: -tan -uan -tnl -unl -tunlp
示例:
显示路由:
root@localhost ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
172.16.250.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
172.26.0.0      192.168.1.1     255.255.0.0     UG        0 0          0 eth0
172.16.0.0      192.168.1.1     255.255.0.0     UG        0 0          0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
显示当前已创建的端口
[root@localhost ~]# netstat -tunlp
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:22                  0.0.0.0:*                   LISTEN      1605/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1419/cupsd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1905/master         
tcp        0      0 0.0.0.0:53629               0.0.0.0:*                   LISTEN      1381/rpc.statd      
tcp        0      0 0.0.0.0:10051               0.0.0.0:*                   LISTEN      1959/zabbix_server  
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1757/mysqld         
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1333/rpcbind        
tcp        0      0 :::22                       :::*                        LISTEN      1605/sshd           
tcp        0      0 :::54198                    :::*                        LISTEN      1381/rpc.statd      
tcp        0      0 ::1:631                     :::*                        LISTEN      1419/cupsd          
tcp        0      0 ::1:25                      :::*                        LISTEN      1905/master         
tcp        0      0 :::10051                    :::*                        LISTEN      1959/zabbix_server  
tcp        0      0 :::111                      :::*                        LISTEN      1333/rpcbind        
tcp        0      0 :::80                       :::*                        LISTEN      1943/httpd          
udp        0      0 127.0.0.1:717               0.0.0.0:*                               1381/rpc.statd      
udp        0      0 0.0.0.0:48607               0.0.0.0:*                               1381/rpc.statd      
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1333/rpcbind        
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1419/cupsd          
udp        0      0 0.0.0.0:660                 0.0.0.0:*                               1333/rpcbind        
udp        0      0 :::43856                    :::*                                    1381/rpc.statd      
udp        0      0 :::111                      :::*                                    1333/rpcbind        
udp        0      0 :::660                      :::*                                    1333/rpcbind
(3) ip  查看及管理 路由,设备,策略路由,隧道
格式:
    ip [ OPTIONS ] OBJECT { COMMAND | help }
        OBJECT := { link | addr | route }
     
选项:   
 ip link: 
   set
     dev IFACE
     可设置属性:
     up and down:激活或禁用指定接口;
     [root@localhost ~]# ip link set lo down
   show
     [dev IFACE]:指定接口
     [up]:仅显示处于激活状态的接口  
     [root@localhost ~]# ip link show up
 ip addr: 
   ip addr { add | del } IFADDR dev STRING 添加或删除IP
      [label LABEL]:添加地址时指明网卡别名
      [scope {global|link|host}]:指明做用域
            global: 全局可用;
            link: 仅连接可用;
            host: 本机可用;                      
      [broadcast ADDRESS]:指明广播地址
      ip addr show 查看IP
            [root@localhost ~]# ip addr show
                           
                           
     ip addr flush  清空某个网卡的全部地址
           ip addr flush dev IFAC 
           
(4)ss
格式:ss [options] [ FILTER ]
选项:
     -t: tcp协议相关链接,链接均有其状态;FSM(Finate state Machine)
     -u: udp协议相关
     -w: raw socket相关
     -l: 处于监听状态,等待别人链接;不加的l话,正在创建的链接或正在通讯的状态
     -a: 全部状态
     -n: 以数字显示IP和端口;
     -e:扩展格式
     -p: 显示相关进程及PID
     -m:内存用量
     -o:计时器信息
     FILTER:=[state TCP-STATE][EXPRESSION] 过滤器
     tcp-STATE:
               LISTEN:监听
               ESTABLISEHD:创建的链接
               FIN_WAIT1:
               FIN_WAIT2:
               SYN-SENT:
               SYN_RECV:
               CLOSED:
     EXPRESSION:
                 dport=
                 sport=
  
[root@localhost ~]# ss -tan
State       Recv-Q Send-Q                                 Local Address:Port                                   Peer Address:Port 
LISTEN      0      128                                               :::22                                               :::*     
LISTEN      0      128                                                *:22                                                *:*     
LISTEN      0      128                                               :::54198                                            :::*     
LISTEN      0      128                                        127.0.0.1:631                                               *:*     
LISTEN      0      128                                              ::1:631                                              :::*     
LISTEN      0      100                                              ::1:25                                               :::*     
LISTEN      0      100                                        127.0.0.1:25                                                *:*     
LISTEN      0      128                                                *:53629                                             *:*     
LISTEN      0      128                                               :::10051                                            :::*     
LISTEN      0      128                                                *:10051                                             *:*     
LISTEN      0      50                                                 *:3306                                              *:*     
LISTEN      0      128                                               :::111                                              :::*     
LISTEN      0      128                                                *:111                                               *:*     
LISTEN      0      128                                               :::80                                               :::*     
ESTAB       0      0                                      192.168.1.125:22                                    192.168.1.105:3660  

[root@localhost ~]# ss -tan '( dport = :22 or sport = :22 )'
State       Recv-Q Send-Q                                                   Local Address:Port                                                     Peer Address:Port 
LISTEN      0      128                                                                 :::22                                                                 :::*     
LISTEN      0      128                                                                  *:22                                                                  *:*     
ESTAB       0      64                                                       192.168.1.125:22                                                      192.168.1.105:3660

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

(1)rpm
安装
格式:rpm -i[option] PACKAGE_FILE
选项:
     -i:表示install安装
     -v -vv:表示显示安装过程,后者显示更加详细;
     -h:以#号显示进度条格式;
     -nodeps:忽略依赖关系
     -force:强制动做,注意安装成功后可能不能运行;
     -test:测试安装,做为测试检查
     -nosignature:不检查签名就是来源合法性;
     -nodigest:不检查包完整性;MD5头;
     -noscipts:不执行程序包脚本片段
     注意:rpm自带四类脚本
     %pre:安装前脚本;   -nopre
     %post:安装后脚本;  -nopost
       %preun:卸载前脚本; -nopreun
     %postun:卸载后脚本;-nopostun
 使用:
       rpm -ivh  PACKAGE_FILE
 
升级
格式: rpm -U|F[optIon] PACAGE_FILE  
选项:
     -U:表示无论软件事先是否存在都要升级,存在就升级,不存在就安装;
     -F:表示软件软件存在就升级,如何不存在,就放弃升级;
     -oldpackage:降级,若是升级以后发现有Bug或者兼容性问题,可使用此选项回滚到升级前的版本;
     -force:强制动做,注意安装成功后可能不能运行;
     -replacepkgs:注意不能替换配置文件;
     注意:
        (1)不要对kernel作升级操做;支持多kernel并存;能够直接安装;
        (2)修改过的配置升级不会覆盖,升级同新文件,会重命名为file.rpmnew
 
查询:
格式:rpm -q[option] [PACKAGE-NAME|PACKAGE_FILE]
选项:
     -qa:查询系统全部已安装的程序包;
     -qf /path/to/file:查询文件是由那个程序包生成;
     -ql:查询程序生成的文件:
     -qi:查询程序属性信息;
     -qc:查询程序配置文件;
     -qd:查询程序提供的文档
     -q -whatprovides CAPABILITY(功能):查询这种CAPABILITY由那个程序提供;
     -q -whatrequires CAPABILITY:查询这种CAPABILITY被哪些程序包依赖;
     -q -scripts:查询程序包生成的脚本;
     -q -changelog:查询软件历史
     查询未安装的软件包信息,须要加-p选项跟上面的选项结合使用,后面的参数必须是PACKAGE_FILE;
     列如:
         -qpi:查询指定PACKAGE_FILE的程序属性信息;
 
卸载
格式:rpm -e[option] PACKAGE-NAME
选项:
     -vh:显示过程
     -nodeps:忽略依赖
     -noscripts:忽略脚本
     -allmatches:卸载全部匹配指定名称的程序包,也就是说卸载软件名称中包含此名称的全部包;
     -test:测试检查卸载,不是真卸载
 注意:
     卸载会检查依赖关系,若是卸载的软件被其余程序依赖,请谨慎卸载,不然致使其依赖程序没法运行;
      
使用:
       rpm -e  PACKAGE_FILE
  
校验
工做原理:校验检查的是软件包来源的合法性和完整性,要想对它们校验检查,必需要有校验机制,这种机制是根据签名和加密实现的,一般发行版的光盘中会有一个包含全部软件特征码的文件,特征码是根据软件包特征提取的,经过单项加密实现的用来校验软件包的完整性,若是软件包在获取途中被修改,在系统中再次提取软件包特征码,跟系统已有的特征码文件比对,不一样则判断被攥该,修改过的软件包,根据相同的加密算法提取的特征确定不一样;来源合法性是根据签名实现的;特征码文件被称为公钥;校验是由校验程序完成的,默认rpm命令安装时会调用;
公钥获取:
      官方网站
      系统光盘
      系统配置文件中,这是系统在安装时从安装光盘复制进去的
        系统公钥位置:/etc/pik/rpm-gpg/RPM-GPG-KEY-CentOS-7
导入公钥:
         rpm -import /path/to/pub.key
校验软件:
         rpm -V PACKAGE-NAME:校验安装文件自安装后是否被修改过,根据PMS记录信息判断;
         rpm -K PACKAGE_FILE:对指定未安装的软件包进行手工校验;
 
数据库重建
默认数据库目录位置:/var/lib/rpm
语法格式:
       rpm -initdb     :初始化数据库
       rpm -rebuilddb  :从新构建
       -dbpath=/path/  :指定数据库建立位置;
       
(2)yum管理程序包,在使用前需配置yum仓库文件
repolist [all|enabled|disabled] 列出全部可用仓库
显示程序包:
# yum list [all | glob_exp1] [glob_exp2] [...]
# yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:
install package1 [package2] [...]
升级程序包:
update package1 [package2] [...]
downgrade package1 [package2] [...](降级安装)
检查可用升级包:
check-update
卸载程序包:
remove | erase package1 [package2] [...]  有依赖关系的也会一同卸载
查看程序包信息:
yum info [...]
查看指定的特性(能够是某个文件)是有哪一个程序包提供的:至关于rmp -qf
provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
生成本地缓存:
makecache
搜索:
search string1 [string2] [...]以指定关键字搜索程序包名及summary信息
从新安装:
reinstall package1 [package2] [...]
显示指定包所依赖关系包名:
deplist package1 [package2] [...]

(3)源码编译程序包管理
    	./configure:
        a.经过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile
         b. 检查依赖到的外部环境

    	make:
    	根据makefile文件,构建应用程序
    make install


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

[root@localhost~]# mkdir /mnt/cdrom          ##新建文件夹做为挂载点使用
[root@localhost~]# mount /dev/cdrom /mnt/cdrom     ##将光盘挂载至文件夹
[root@localhost~]# cd /etc/yum.repos.d/        ##进入yum仓库配置文件夹
[root@localhost yum.repos.d]# vim CentOS-cdrom.repo  ##配置新的yum仓库文件
[cdrom]
name=CentOS 7.1 Release cdrom  # 名称
baseurl=file:///mnt/cdrom   # 路径 
enable=1   # 是否开启此yum仓库,默认开启。
gpgcheck=0  # 使用前是否检验包

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

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

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

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

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

[root@localhost bin]# vim SstopKstart.sh 
#!/bin/bash
#

export K=0
export S=0

for i in $(ls /etc/rc.d/rc3.d/K* | cut -d'/' -f5);do
	echo "$i stop"
	let K=$K+1
done

for l in $(ls /etc/rc.d/rc3.d/S* | cut -d'/' -f5);do
	echo "$l start"
	let S=$S+1
done

echo  "K开头的文件有$K 个;S开头的文件有$S 个。"
[root@localhost bin]# chmod +x SstopKstart.sh
[root@localhost bin]# SstopKstart.sh 
K50netconsole stop
KEQE stop
S10network start
K开头的文件有2 个;S开头的文件有1 个。
[root@localhost bin]#


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

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

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

root@localhost bin]# cat UserID.sh 
#!/bin/bash
#

export IDsum=0

for i in $*;do
   if id $i &> /dev/null ;then
       userid=$(id -u $i)
       echo "$i=$userid"
   else
       echo "user $i not found."
   fi
	let IDsum=$IDsum+$userid
done

echo "$* id sum $IDsum." 
[root@localhost bin]# chmod +x UserID.sh
[root@localhost bin]# UserID.sh centos mysql
centos=1000
mysql=3004
centos mysql id sum 4004.


1四、写一个脚本

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

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

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

[root@localhost bin]# vim dirfile.sh 
#!/bin/bash
#
export dirsum=0
export filesum=0
if [ $# -le 1 ];then
   echo "please provide least one dir"
   exit 1
fi
for i in $*;do
if [ -d $i -a -x $i ];then
let dirsum+=$(ls -l $i | grep ^d |wc -l) 
let filesum+=$(ls -l $i | grep -v ^d |wc -l) 
else
echo "The $i is not exist or Permission denied,please check it!"
exit 2
fi
done
echo "the directories sum:$dirsum"
echo "the file sum:$filesum"
[root@localhost bin]# bash +x dirfile.sh /etc/ /var/
the directories sum:103
the file sum:119


1五、写一个脚本

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

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

[root@localhost bin]# vim username.sh
#!/bin/bash
#

read -p "请给出用户:" username

if [ -z $username ]; then
	echo "用户名不能为空。"
	exit 1
fi

id $username &> /dev/null
if [ $? -eq 0 ];then
 	let ID=$(id -u $username)
	if [ $ID -ge 500 ];then
		echo "$username 为普通用户。"
	fi
else
	echo "用户名不存在,请给出有效用户名!"
fi
[root@localhost bin]# bash +x username.sh 
请给出用户:centos
centos 为普通用户。
[root@localhost bin]# bash +x username.sh 
请给出用户:mysql
mysql 为普通用户。
[root@localhost bin]# bash +x username.sh 
请给出用户:root
[root@localhost bin]#


1六、写一个脚本

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

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

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

[root@localhost bin]# vim adduser.sh 
#!/bin/bash
#
export useraddsum=0
if [ ! $UID -eq 0 ]; then
	echo "Only root."
	exit 1
fi

for i in {1..10};do
	if id user$i &> /dev/null; then
		echo "user$i 用户已存在."
	else
		useradd user$i
		if [ $? -eq 0 ]; then
			echo "user$i" | passwd --sduin user$i &> /dev/null
			echo "Add user$i finished."
			let useraddsum+=1
		fi
	fi
done

         echo "共添加$useraddsum个用户。"
[root@localhost bin]# bash +x adduser.sh 
Add user1 finished.
Add user2 finished.
user3 用户已存在.
Add user4 finished.
Add user5 finished.
Add user6 finished.
Add user7 finished.
Add user8 finished.
Add user9 finished.
Add user10 finished.
共添加9个用户。


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

[root@localhost bin]# vim ping1.sh 
#!/bin/bash
#

for i in {20..100};do
	ping -c 1 -w 1 172.16.250.$i &> /dev/null
		if [ $? -eq 0 ];then
			echo "172.16.250.$i"
		fi
done
[root@localhost bin]# bash +x ping1.sh 
172.16.250.20
172.16.250.22
172.16.250.88
172.16.250.99

1八、打印九九乘法表;

[root@localhost bin]# vim list.sh
#!/bin/bash
#

for i in {1..9};do
	for l in $(seq 1 $i);do
		let sum=$i*$l
		echo -e "${i}X${l}=$sum \c"
	done
	echo
done
[root@localhost bin]# bash +x list.sh 
1X1=1 
2X1=2 2X2=4 
3X1=3 3X2=6 3X3=9 
4X1=4 4X2=8 4X3=12 4X4=16 
5X1=5 5X2=10 5X3=15 5X4=20 5X5=25 
6X1=6 6X2=12 6X3=18 6X4=24 6X5=30 6X6=36 
7X1=7 7X2=14 7X3=21 7X4=28 7X5=35 7X6=42 7X7=49 
8X1=8 8X2=16 8X3=24 8X4=32 8X5=40 8X6=48 8X7=56 8X8=64 
9X1=9 9X2=18 9X3=27 9X4=36 9X5=45 9X6=54 9X7=63 9X8=72 9X9=81
相关文章
相关标签/搜索