week8

1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。

網橋:

         連接不同子網,使其透明通信,它們工作在鏈路層。它們處理的是鏈路層數據,一般來說就是以太
    網幀格式的  數據,缺點是無法避免“廣播風暴”,交換機就是網橋的集合。
         根據MAC地址來轉發幀,本地通信只限本網段內,相當于中繼器,線路比較長保證信號不變形的傳輸
    工作在物理層,相當于一個物理接口

集線器:

        集線器的基本功能是信息分發,它把一個端口接收的所有信號向所有端口分發出去。一些集線器
    在分發之前將弱信號重新生成,一些集線器整理信號的時序以提供所有端口間的同步數據通信,
    工作在物理層,集線器只是把各個終端互相連接起來而已,處理的是信號。
        接收到的數據包進行廣播轉發,所有端口都能收到此數據,通過MAC確認是不是發給自己的包進行回應
    廣播形式轉發數據都每個端口,工作在數據鏈路層,共享帶寬

二層交換機:

        傳統交換機從網橋發展而來,屬于OSI第二層即數據鏈路層設備。它根據MAC地址尋址,通
    過站表選擇路由,站表的建立和維護由交換機自動進行。
        物理編址、網絡拓撲結構、錯誤校驗、幀序列以及流控    不是廣播形式轉發數據,對于一個目的
    MAC進行轉發,工作在數據鏈路層,與集線器不同,不是廣播形式,而是選擇,同時獨享帶寬

三層交換機:

        三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部
    的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發
        通過IP轉發數據包,不具有選路功能,基于IP的轉發,工作在網絡層,相當于路由器

路由器     

        路由器工作于OSI參考模型的第3層(網絡層),是連接因特網中各局域網、廣域網的設備,它
    根據信道的情況自動選擇和設定路由,以最佳路徑,按前后順發送信號
        為經過路由器的每個數據包尋找一條最佳傳輸路徑  選路,轉發,NAT等  工作在網絡層,路由
    選路轉發數據

2、IP地址的分類有哪些?子網掩碼的表示形式及其作用

    iP地址就是給每一個連接在Internet上的主機分配一個唯一的32bit 地址(標識符),IP地址的結構
使我們可以Internet上很方便地進行尋址,IP地址有兩部分組成,一部分為網絡地址,另一部分為主機
地址.IP地址分為A,B,C,D,E5類.常用的是B和C兩類. 
     A類:
           0 000 0000- 0 111 111:1-127
           網絡數:127-1=126
           每個網絡中的主機數:2^24-2
           默認子網掩碼:255.0.0.0
           私有地址 10.0.0.0/8
     B類
           10 00 0000-10 11 1111: 128-191
           網絡數:2^14
           網絡主機數:2^16-2
           默認子網掩碼:255.255.0.0
           私網地址:172.16.0.0/16 - 172.31.0.0/16

     C類
           110 0 0000- 110 1 1111: 192-223
           網絡數:2^21
           網絡主機數:2^8-2
           默認子網掩碼:255.255.255.0
           私網地址192.168.0.0/24-192.168.255.0/24

      D類:組播
           1110 0000 - 1110 1111: 224-239 //以1110開頭

      E類:保留,240-255

3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。

OSI模型:
(1)物理層
    物理層所處理的數據單位是比特(bit),物理層向上為數據鏈路層提供物理鏈路,實現透明的比
特流(bit stream)傳輸服務,物理層向下與物理媒體相連,要確定連接物理媒體的網絡接口的
機械、電氣、功能和過程方面的特性。
    物理設備:網卡、網線;老式集線器;

(2)數據鏈路層
    數據鏈路層負責在單個鏈路上的結點間傳送以幀(frame)為PDU的數據,在不太可靠的物理鏈路上
實現可靠的數據傳輸。數據鏈路層的主要功能包括:建立、維持和釋放數據鏈路的連接,鏈路的
訪問控制,流量控制和差錯控制。
    物理設備:MAC地址,二層交換機;PPP協議;

(3)網絡層
    網絡層傳送的PDU稱為分組或包(packet),在物理網絡間傳送分組,負責將源端主機的報文通過
中間轉發結點傳送到目的端。網絡層是通信子網的最高層,為主機提供虛電路和數據報兩種方
式的服務。網絡層主要負責分組轉發和路由選擇,根據路由表把分組逐跳地由源站傳送到目的
站,并能適應網絡的負載及拓撲結構的變化,動態地更新路由表。
    物理設備:IP地址,網關,網關代理;三層交換機;路由設備;
(4)傳輸層
    傳輸層傳輸的PDU稱為報文(message),傳輸層為源結點和目的結點的用戶進程之間提供端到端的
可靠的傳輸服務。端到端的傳輸指的是源結點和目的結點的兩個傳輸層實體之間,不涉及路由器
等中間結點。為了保證可靠的傳輸服務,傳輸層具備以下一些功能:面向連接、流量控制與擁塞
控制、差錯控制相網絡服務質量的選擇等。
    協議:TCP,UDP協議,IP代理;

(5)會話層
    會話層在傳輸層服務的基礎上增加控制會話的機制,建立、組織和協調應用進程之間的交互過
程。會話層提供的會話服務種類包括雙工、半雙工和單工方式。會話管理的一種方式是令牌管理
,只有令牌持有者才能執行某種操作。會話層提供會話的同步控制,當出現故障時,會話活動在
故障點之前的同步點進行重復,而不必從頭開始。
    協議: HTTP協議,web,mail

(6)表示層
    表示層定義用戶或應用程序之間交換數據的格式,提供數據表示之間的轉換服務,保證傳輸的信
息到達目的端后意義不變。

(7)應用層
     應用層直接面向用戶應用,為用戶提供對各種網絡資源的方便的訪問服務。

TCP/IP模型:
    TCP/IP是一組用于實現網絡互連的通信協議。Internet網絡體系結構以TCP/IP為核心。基于TCP/IP
    的參考模型將協議分成四個層次,它們分別是:網絡訪問層、網際互聯層、傳輸層(主機到主機)、和
    應用層。
    
1、主機到網絡層  
  實際上TCP/IP參考模型沒有真正描述這一層的實現,只是要求能夠提供給其上層-網絡互連層一
    個訪問接口,以便在其上傳遞IP分組。由于這一層次未被定義,所以其具體的實現方法將隨著網
    絡類型的不同而不同。
    物理設備:網卡、網線、中繼器;老式集線器;

2、網絡互連層  
  網絡互連層是整個TCP/IP協議棧的核心。它的功能是把分組發往目標網絡或主機。同時,為了盡
    快地發送分組,可能需要沿不同的路徑同時進行分組傳遞。因此,分組到達的順序和發送的順序
    可能不同,這就需要上層必須對分組進行排序。  
   網絡互連層定義了分組格式和協議,即IP協議(Internet Protocol)。  
   網絡互連層除了需要完成路由的功能外,也可以完成將不同類型的網絡(異構網)互連的任務。
    除此之外,網絡互連層還需要完成擁塞控制的功能。
    物理設備:二層交換機,網橋

3、傳輸層  
  在TCP/IP模型中,傳輸層的功能是使源端主機和目標端主機上的對等實體可以進行會話。在傳輸
層定義了兩種服務質量不同的協議。即:傳輸控制協議TCP(transmission control protocol)
和用戶數據報協議UDP(user datagram protocol)?! CP協議是一個面向連接的、可靠的協議。
它將一臺主機發出的字節流無差錯地發往互聯網上的其他主機。在發送端,它負責把上層送下來的字節
流分成報文段并傳遞給下層。在接收端,它負責把收到的報文進行重組后遞交給上層。TCP協議還要處
理端到端的流量控制,以避免緩慢接收的接收方沒有足夠的緩沖區接收發送方發送的大量數據,UDP協
議是一個不可靠的、無連接協議,主要適用于不需要對報文進行排序和流量控制的場合。
物理設備:三層交換機,路由器; 

  

4、應用層  
   TCP/IP模型將OSI參考模型中的會話層和表示層的功能合并到應用層實現?! ?
   應用層面向不同的網絡應用引入了不同的應用層協議。其中,有基于TCP協議的,如文件傳輸協
議(File Transfer Protocol,FTP)、虛擬終端協議(TELNET)、超文本鏈接協議(Hyper 
Text    Transfer Protocol,HTTP),也有基于UDP協議的。
物理設備:高層交換機等

4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)

第一步配置IP/NETMASK:本地通信        
第二步配置路由(網關):跨網絡通信
第三部配置DNS服務器地址,Linux可以配置三個DNS:基于主機名的通信
第四步重啟網絡服務

實例:
1、vim /etc/sysconfig/network-scripts/ifcfg-eth0 (修改配置文件,永久有效) 
2、編輯eth0文件,完成后保存退出
    ONBOOT=no改為ONBOOT=yes
    BOOTPROTO=dhcp改為BOOTPROTO=static或none
    IPADDR=IP地址
    NETMASK=mas地址
    GATEWAY=網關地址
    DNS1=dns服務器地址(dns可省略)
    3重啟網絡服務
    service network restart或/etc/init.d/network restart

    即時生效:(重啟后失效)
    ifconfig eth0 192.168.0.1/24
    ifconfig eth0 192.168.0.1 netmask 255.255.255.0
    配置文件修改之后,如果要生效,需要重啟網絡服務;
    CentOS 6:# service  network  restart
    CentOS 7:# systemctl  restart  network.service

5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。

靜態指定:
        ifconfig:配置IP,NETMASK
            ifconfig  IFACE  IP/MASK  [up|down]
        iproute2家族:
            ip [ OPTIONS ] OBJECT { COMMAND | help }
            OBJECT := { link | addr | route | netns  }
        nmcli  [ OPTIONS ] OBJECT { COMMAND | help }    
        centos6:setup:text window 工具
        centos6:nmtui:text window 工具

配置文件:RedHat及相關發行版,最簡單的在這一個配置文件里配。
        /etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
        (1) DNS服務器指定    :配置文件:/etc/resolv.conf
        (2) 本地主機名配置:
            配置文件:/etc/sysconfig/network
            CentOS 7:hostnamectl  set-hostname:設定主機名,永久有效;  
                      vim /etc/hostname 
            hostname  HOSTNAME 當前系統有效,重啟后無效;
            echo  "VALUE"  >  /proc/sys/kernel/hostname 

動態分配:依賴于本地網絡中有DHCP服務
        DHCP:Dynamic Host Configure Procotol
路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE

6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主機使用紅色顯示;

[root@localhost scripts]# cat ping2.sh 
#!/bin/bash
#
declare -i uphosts=0
declare -i downhosts=0
for i in {1..254}; do
    if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then
        echo -e "\033[0;32;1m 172.16.16.$i is up! \033[0m"
        let uphosts+=1
    else
        echo -e "\033[0;31;1m 172.16.250.$i is down! \033[0m"
        let downhosts+=1
fi
done
echo "Up hosts: $uphosts, Down hosts: $downhosts."                      
[root@localhost scripts]# 

[root@localhost scripts]# 
#!/bin/bash
for ((i=1;i<255;i++));do
        ping -c 1 -w 1 "172.16.250.$i" >/dev/null
        if [ $? -eq 0 ];then
               echo -e "\033[0;32;1m 192.168.1.$i is up! \033[0m"
        else
               echo -e "\033[0;31;1m 192.168.1.$i is down! \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地址;
            NM_CONTROLLED:是否使用NetworkManager服務來控制接口;

8、如何給網絡接口配置多個地址,有哪些方式?

[root@mylinux ~]# ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 臨時有效
[root@mylinux ~]# ip addr add  192.168.0.221/24 dev eth0:5  臨時有效
[root@mylinux network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:2
DEVICE=eth0
HWADDR=00:0C:29:8A:89:8B
TYPE=Ethernet
UUID=c65e7b55-1f46-449e-b4e6-4c53b3417bba
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static    #網上別名不支持動態獲取地址,僅支持static, none          
IPADDR=192.168.111.11
NETMASK=255.255.255.0
GATEWAY=192.168.111.1
[root@mylinux network-scripts]#

9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。

ifconfig interface [aftype] options | address ...
ifconfig -a 顯示所有接口,包括inactive狀態的接口;
ifconfig  IFACE_LABEL  IPADDR/NETMASK#ifconfig eth1:3 192.168.19.2/24支持多個ip
ifconfig eth1 192.168.1.12/24   #配置ip地址,立即生效。
ifconfig eth1 promisc #啟用混雜模式
ifconfig eth1 -promisc #關閉混雜模式
ifconfig eth1 0       #刪除eth1的ip地址


查看:# route  -n 數字格式顯示
route  add  [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If]
route add -net  10.0.0.0/8  gw  192.168.10.1  dev  eth1 #添加路由,下一跳地址必須同網段
route add  default  gw 192.168.10.1  配置默認路由         
刪除:#route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]
route  del  -net  10.0.0.0/8  gw 192.168.10.1
route  del  default         

netstat -rn#顯示路由表
netstat -tnlp #顯示網絡連接信息,常用:-tan,  -uan,  -tnl,  -unl,  -tunlp
netstat  -i #顯示所有接口的統計數據
netstat -Ieth0#顯示指定的eth0接口統計數據,中間沒有空格。
ifup/ifdown:必須要有這個/etc/sysconfig/network-scripts/ifcfg-IFACE配置文件才支持。

hostname  HOSTNAME#當前系統有效,重啟后無效
hostnamectl  status:顯示當前主機名信息
hostnamectl  set-hostname HOSTNAME:centos7設定主機名,永久有效
hostnamectl set-hostname mylinux #cat /etc/hostname
vim /etc/sysconfig/network#contos6:此方法的設置不會立即生效; 但以后會一直有效

vim /etc/resolv.conf# 格式nameserver 218.104.111.122
                      如果網卡配置文件中也同時配置了DNS,生效的應該是網卡文件中的地址。
vim /etc/hosts      #看你的需要,相關文件更改。支持別名
host/nslookup/dig#測試dns是否有效的工具#eg:dig -t A www.magedu.com#不檢查hosts文件
dig  -x  IP#IP --> FQDN大多數服務器不支持反解

ip link show=ip link list #display device attributes支持簡寫:ip li sh
ip  link  help -  顯示簡要使用幫助
ip  link  set - change device attributes
    dev NAME (default):指明要管理的設備,dev關鍵字可省略;
    up和down:eg:ip link set eth1 dev up/down #啟用或禁用
    multicast on或multicast off:啟用或禁用多播功能;
    name NAME:重命名接口
    mtu NUMBER:設置MTU的大小,默認為1500;
    netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間;

ip netns:  - manage network namespaces. centos7默認支持         
    ip  netns  list:列出所有的netns
    ip  netns  add  NAME:創建指定的netns   
        #ip netns add mynet
        #ip link set eno16777736 netns mynet
        #ip netns exec mynet ip link show
    ip  netns  del  NAME:刪除指定的netns  
        #ip netns del mynet
    ip  netns   exec  NAME  COMMAND:在指定的netns中運行命令
        # ip netns exec mynet ip link show

ip  addr  add  IFADDR  dev  IFACE
        # ip addr add 192.168.10.100/24 dev eth1 可以添加多個地址
        #ip addr add 10.1.1.10/8 dev eth1 label eth1:0#指定基別支持ifconfig查看
        [scope SCOPE_VALUE]:用處不大
            global:全局可用;
            link:接口可用;
            host:僅本機可用; 
ip addr  delete  IFADDR  dev  IFACE 
        #ip addr del 192.168.21.1/24 dev eth1
ip  addr   list  [IFACE]:顯示接口的地址
ip  addr  flush  dev  IFACE    
        #ip addr flush dev eth1

ip roote list
ip route add - add new route
ip route change - change route
ip route replace - change or add new one
ip  route   add  TYPE PREFIX  via GW  [dev  IFACE]  [src SOURCE_IP]     
    #ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100
    #ip route add 192.168.0.0/24 via 10.0.10.100 dev eth1
    # ip  route  add default  via  GW                       
ip  route  del  TYPE PRIFIX 如果有多條的話需要具體指定。
    #ip  route delete  192.168.1.0/24
ip  route  get  TYPE PRIFIX
    #ip route  get  192.168.0.0/24
ip route flush - flush routing tables
    #ip route flush 169.254/16

ss  [options]  [ FILTER ]      FILTER := [ state TCP-STATE ]  [ EXPRESSION ]
    選項:
    -t:TCP協議的相關連接            TCP的常見狀態:
    -u:UDP相關的連接                         LISTEN:監聽
    -w:raw socket相關的連接                  ESTABLISEHD:建立的連接   
    -l:監聽狀態的連接                          FIN_WAIT_1:
    -a:所有狀態的連接                          FIN_WAIT_2:
    -n:數字格式                             SYN_SENT:
    -p:相關的程序及其PID                       SYN_RECV:
    -e:擴展格式信息                           CLOSED:
    -m:內存用量                  EXPRESSION:
    -o:計時器信息                         dport =  sport =                           
    示例:'( dport = :22 or sport = :22)'
        ~]# ss   -tan    '(  dport = :22 or sport = :22  )'
        ~]# ss  -tan  state  ESTABLISHED    

IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
專用的命令的進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)
CentOS 6:  service  SERVICE  {start|stop|restart|status}
CentOS 7:systemctl  {start|stop|restart|status}  SERVICE[.service]
路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
支持兩種配置方式,但不可混用:
(1) 每行一個路由條目:TARGET  via  GW    
        10.0.0.0/8 via  192.168.10.2    
(2) 每三行一個路由條目:
        ADDRESS#=TARGET     ADDRESS0=20.0.0.0
        NETMASK#=MASK       NETMASK0=255.0.0.0
        GATEWAY#=NEXTHOP    GATEWAY0=192.168.10.2           

nmcli  [ OPTIONS ] OBJECT { COMMAND | help }
connection - start, stop, and manage network connections    
nmcli device show  
nmcli device status
nmcli device disconnect/connect eno16777736

ping  [OPTION]  destination
        -c #:發送的ping包個數;
        -w #:ping命令超時時長;
        -W #:一次ping操作中,等待對方響應的超時時長;
        -s #:指明ping包報文大?。?

hping命令: (package: hping3)
    send (almost) arbitrary TCP/IP packets to network hosts
        --fast    #快
        --faster      #比快更快
        --flood   #有多快發多快,
        -i uX     #指定時間,多少微妙發一個包。

traceroute命令:跟蹤從源主機到目標主機之間經過的網關;
    - print the route packets trace to network host

ftp命令:
    ftp: File Transfer Protocol         
        ftp服務命令行客戶端工具,     #ftp 192.168.1.1

lftp命令:
    lftp  [-p port]  [-u user[,pass]] [site]
    get, mget   下載
    put, mput   上傳
    rm, mrm     刪除

lftpget命令:
    lftpget [-c] [-d] [-v] URL [URL...]
    -c:繼續此前的下載;
    lftpget http://172.16.0.1/centos6.repo

wget命令:非交互是下載器
    The non-interactive network downloader.
    wget [option]... [URL]...
        -b:在后臺執行下載操作;
        -q:靜默模式,不顯示下載進度;
        -O file:下載的文件的保存位置;
        -c:續傳;
        --limit-rate=amount:以指定的速率傳輸文件;

10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]
        安裝:-i, --install
        升級:-U, --update, -F, --freshen
        卸載:-e, --erase
        查詢:-q, --query
        校驗:-V, --verify
        數據庫維護:--builddb, --initdb   
安裝:rpm  -ivh  PACKAGE_FILE ...
升級:rpm  -Uvh PACKAGE_FILE ...升級或安裝
升級:rpm  -Fvh PACKAGE_FILE ...升級
卸載:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test]
     PACKAGE_NAME ...
查詢:rpm -qi | qf | qc | qf |qd | qpi | qpl | qpc
校驗:rpm {-V|--verify} [select-options] [verify-options]
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]  

yum repolist [all|enabled|disabled]   顯示倉庫列表
yum list [all | glob_exp1] [glob_exp2] [...]顯示程序包
yum list {available|installed|updates} [glob_exp1] [...]  顯示程序包         
yum install package1 [package2] [...]  安裝程序包:
yum reinstall package1 [package2] [...]  重新安裝
yum update [package1] [package2] [...]  升級程序包
yum downgrade package1 [package2] [...] 降級  
yum check-update        檢查可用升級
yum remove | erase package1 [package2] [...]  卸載程序包
yum info [...]  查看程序包information
yum provides | whatprovides feature1 [feature2] [...] 
查看指定的特性(可以是某文件)是由哪個程序包所提供
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 清理本地緩存
yum makecache  構建緩存
yum search string1 [string2] [...]  以指定的關鍵字搜索程序包名及summary信息
yum deplist package1 [package2] [...] 查看指定包所依賴的capabilities
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|
            undo|rollback|new|sync|stats]     查看yum事務歷史
yum localinstall rpmfile1 [rpmfile2] [...]本地安裝軟件包 
yum localupdate rpmfile1 [rpmfile2] [...] 本地更新軟件包 
yum groupinstall group1 [group2] [...] 以組的形式安裝軟件包組件  
yum groupupdate group1 [group2] [...] 更新組相關軟件包 
yum grouplist [hidden] [groupwildcard] [...]獲取已安裝和沒安裝的軟件包組件 章 
yum groupremove group1 [group2] [...] 移除軟件包組件  
yum groupinfo group1 [...]查看軟件包組件相關信息
yum createrepo [options] <directory>    創建yum倉庫:
yum的命令行選項:
    --nogpgcheck:禁止進行gpg check;
    -y: 自動回答為“yes”;
    -q:靜默模式;
    --disablerepo=repoidglob:臨時禁用此處指定的repo;
    --enablerepo=repoidglob:臨時啟用此處指定的repo;
    --noplugins:禁用所有插件;
yum的repo配置文件中可用的變量:
    $releasever: 當前OS的發行版的主版本號;
    $arch: 平臺;
    $basearch:基礎平臺;
    $YUM0-$YUM9
實例:http://mirrors.magedu.com/centos/$releasever/$basearch/os

11、如何使用發行版光盤作為yum repository,請描述該過程。

(1) 掛載光盤至某目錄,例如/media/cdrom
        # mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 創建配置文件:vim /etc/yum.repos.d/CentOS-Media.repo 
[c7-media]  #yum倉庫的名字
name=CentOS-$releasever - Media     #描述
baseurl=file:///media/cdrom/ #倉庫的訪問路徑,注意三個斜線
#        file:///media
#        file:///media/cdrecorder/
gpgcheck=1    #使用前是否檢驗包
enabled=1     #是否啟用此倉庫
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  #指定密鑰路徑
(3)查看倉庫:  yum repolist

12、寫一個腳本,完成以下功能

(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;

(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;

(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;

(4) 分別統計S開頭和K開頭的文件各有多少;

[root@mylinux scripts]# cat e.sh 
#!/bin/bash 
#
declare -i k=0
declare -i s=0
for i in /etc/rc.d/rc3.d/*; do
    file=`basename $i` 
    if [[ $file =~ ^K ]]; then 
       echo "$file stop"
    let k++
    else
        echo "$file start"
        let s+=1
    fi
done
echo "The K file: $k,The S file: $s"
[root@mylinux scripts]#

13、寫一個腳本,完成以下功能

(1) 腳本能接受用戶名作為參數;

(2) 計算此些用戶的ID之和;

[root@mylinux scripts]# cat g.sh 
#!/bin/bash
#
declare -i sum=0
[ $# -lt 1 ] && echo "At least 1 username" && exit 1
for i in $*; do 
    if id $i &> /dev/null; then
        sum+=$(id -u $i)
    else
        echo "$i is not an username"
        exit 2
   fi
done
echo "The userID zhi he is: $sum." 
[root@mylinux scripts]#

14、寫一個腳本

(1) 傳遞一些目錄給此腳本;

(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;

(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;

[root@mylinux scripts]# cat h.sh 
#!/bin/bash
#
declare -i f=0
declare -i d=0
declare -i l=0
declare -i b=0
declare -i c=0
declare -i s=0
declare -i p=0
declare -i u=0

if [ $# -lt 1 ];then
   echo "At list a dirctory like /root" && exit 2
else
   for i in $*; do 
      for filename in $(ls $i); do
          cd $i 
          if [ -f $filename ]; then
             echo "$filename ==>common file."
             let f++
      elif [ -d $filename ]; then
             echo "$filename ==>Directory."
             let d++
      elif [ -L $filename ]; then
             echo "$filename ==>Symbolic link."
             let l++
      elif [ -b $filename ]; then 
             echo "$filename ==>block special file."
             let b++
      elif [ -c $filename ]; then
             echo "$filename ==>character special file."
             let c++
      elif [ -S $filename ]; then
             echo "$filename ==>Socket file."
             let s++
      elif [ -p $filename ]; then
             echo "$filename ==>ming ming gua ndao file."
             let p++
      else 
             echo "$filenam ==>Unkown file"
             let u++
      fi
      done
   done
fi 
echo "#######################################################"
echo "Directory: $d"
echo "common file: $f"
echo "Symbolic link: $l"
echo "block special file: $b"
echo "character special file: $c"
echo "Socket file: $s"
echo "ming ming guandao file:$p"
echo "Unkown file: $u"
[root@mylinux scripts]#

15、寫一個腳本

通過命令行傳遞一個參數給腳本,參數為用戶名

如果用戶的id號大于等于500,則顯示此用戶為普通用戶;

[root@mylinux scripts]# cat s.sh 
#!/bin/bash
#
[ $# -lt 1 ] && echo "Atleast a username." && exit 1
! id $1 &> /dev/null && echo "No such user." && exit 2
userid=$(id -u $1)
if [ $userid -eq 0 ]; then
   echo "root"
elif
   [ $userid -ge 1000 ]; then
   echo "common user."
else 
   echo "System user."
fi
[root@mylinux scripts]#

16、寫一個腳本

(1) 添加10用戶user1-user10;密碼同用戶名;

(2) 用戶不存在時才添加;存在時則跳過;

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

[root@mylinux scripts]# cat x.sh 
#!/bin/bash
#
declare -i sum=0
for i in {1..10}; do 
    if id user$i &> /dev/null;then
        echo "user$i exists"
    else
        useradd user$i && echo "user$i" | passwd --stdin user$i &> /dev/null
        let sum++
    fi
done
    echo "add $sum user finished"
[root@mylinux scripts]# for i in {1..10}; do userdel -r user$i;done   #刪除

17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;

[root@mylinux scripts]# cat ping2.sh 
#!/bin/bash
for((i=20;i<=100;i++))
do
    ping -c 1 -w 1 172.16.250.$i &> /dev/null
    if [ $? -eq 0 ];then
        echo "172.16.250.$i is up"
    fi
done
[root@mylinux scripts]#

18、打印九九乘法表;

[root@mylinux scripts]# cat 994.sh 
#!/bin/bash
#
for ((j=1;j<=9;j++)); do 
    for ((i=1;i<=j;i++)); do 
        echo -e -n "${i}X${j}=${i}*${j}\t"
    done
    echo
done
[root@mylinux scripts]#

原創文章,作者:N24_小呆,如若轉載,請注明出處:http://www.www58058.com/64142

(0)
N24_小呆N24_小呆
上一篇 2016-12-19
下一篇 2016-12-19

相關推薦

  • Linux防火墻之基本原理

    本系列文章主要講述Linux防火墻的基本原理和基礎使用方法: 1.什么是防火墻: 當我們把計算機連入互聯網與其他計算機進行通信時,這無疑也將自己的信息暴露了,那就意味著可能會有一些心懷不軌的人會利用這些信息來攻擊自己的主機,尤其是作為一臺服務器向互聯網用戶提供服務時,就迫切需要一種隔離和保護機制,來隔離外部網絡,達到保護自我的目的。而這種隔離機制就叫做防火墻…

    Linux干貨 2016-12-27
  • 第一次作業

    第一次作業 作業1 博客 作業2 echo -e "\033[49;31;4;5m*******\033[0m \n\033[49;32;4;5m ***** \033[0m \n\033[49;33;4;5m  ***  \033[0m \n\033[49;34;4;5m   *   \033[0m&quo…

    Linux干貨 2016-08-03
  • 推薦-LVS專題: LVS+Keepalived并使用DNS輪詢實現Director的高可用和負載均衡

    LVS專題: LVS+Keepalived并使用DNS輪詢實現Director的高可用和負載均衡 前言 什么是KeepAlived 實驗介紹 實驗拓撲 實驗環境 實驗步驟 配置KeepAlived(1) 實現Director 的VIP互為主從 測試 配置LVS 配置KeepAlived(2) 測試LVS 配置RS的IP和web服務 配置DNS 最終測試 總結…

    Linux干貨 2016-04-09
  • linux 系統日志管理

         在linux系統上面,系統可以記錄從開機到當前系統上面何時發生了那些事情,并將其分類,分級別寫到特定的日志文件當中,如系統自身產生的問題,用戶登錄信息,網絡數據信息等等。我們可以根據這些日志信息來解決系統方面的錯誤,網絡服務問題等等。日志對于安全來說,非常重要,它記錄了系統每天發生的各種各樣的事情,你可以通過它來檢查錯…

    2017-08-14
  • Nginx七層反代服務器 (Blog 20)

    http反代、fastcgi反代

    Linux干貨 2017-12-20
  • 磁盤陣列RAID

    磁盤陣列RAID 什么是RAID RAID的全稱是Redundant Array of Inexpensive Disks 可以釋義為 廉價磁盤冗余陣列,后來的RAID里的字母I被認為是Independent,即獨立的磁盤冗余陣列。 RAID的作用 由于服務器中磁盤讀寫率太大,所以磁盤經常損壞,raid可以讓壞了一塊磁盤時,服務器不至于巖機。當然這只是其中的…

    Linux干貨 2017-06-18

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-23 12:43

    贊~總結的不錯,上面的幾個腳本能給出使用說明會更好一點,繼續加油~

欧美性久久久久