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
相關文章
相關標籤/搜索