計算機網絡知識,腳本編程_第八周練習

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

網橋:網橋(Bridge)是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,不是共享一條背板總線,可隔離沖突域。網橋比集線器(Hub)性能更好,集線器上各端口都是共享同一條背板總線的。后來,網橋被具有更多端口、同時也可隔離沖突域的交換機(Switch)所取代。

集線器:集線器的英文稱為“Hub”?!癏ub”是“中心”的意思,集線器的主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。它工作于OSI(開放系統互聯參考模型)參考模型第一層,即“物理層”。集線器與網卡、網線等傳輸介質一樣,屬于局域網中的基礎設備,采用CSMA/CD(即帶沖突檢測的載波監聽多路訪問技術)介質訪問控制機制。集線器每個接口簡單的收發比特,收到1就轉發1,收到0就轉發0,不進行碰撞檢測。

二層交換機:二層交換機工作于OSI模型的第2層(數據鏈路層),故而稱為二層交換機。二層交換技術的發展已經比較成熟,二層交換機屬數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。

三層交換機:三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發。對于數據包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定等功能,由軟件實現。三層交換技術就是二層交換技術+三層轉發技術。傳統交換技術是在OSI網絡標準模型第二層——數據鏈路層進行操作的,而三層交換技術是在網絡模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到最優網絡性能。

路由器:路由器(Router),是連接因特網中各局域網、廣域網的設備,它會根據信道的情況自動選擇和設定路由,以最佳路徑,按前后順序發送信號。 路由器是互聯網絡的樞紐,"交通警察"。目前路由器已經廣泛應用于各行各業,各種不同檔次的產品已成為實現各種骨干網內部連接、骨干網間互聯和骨干網與互聯網互聯互通業務的主力軍。路由和交換機之間的主要區別就是交換機發生在OSI參考模型第二層(數據鏈路層),而路由發生在第三層,即網絡層。這一區別決定了路由和交換機在移動信息的過程中需使用不同的控制信息,所以說兩者實現各自功能的方式是不同的。

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

IP地址分類

A類IP地址:地址范圍0.0.0.0 -- 127.0.0.0,默認子網掩碼255.0.0.0
B類IP地址:地址范圍128.0.0.0 -- 191.255.0.0,默認子網掩碼255.255.0.0
C類IP地址:地址范圍192.0.0.0 -- 223.255.255.0,默認子網掩碼255.255.255.0
D類是組播地址:地址范圍224.0.0.0 -- 239.255.255.255
E類作為保留研究:地址范圍240.0.0.0 -- 255.255.255.255
保留私網地址:
A類:10.0.0.0 -- 10.255.255.255
B類:172.16.0.0 -- 172.31.255.255
C類:192.168.0.0 -- 192.168.255.255
特殊地址:
本地還回地址:127.0.0.1 -- 127.0.0.255
主機請求無法被分配時候,自己生成的地址:169.254.0.0

子網掩碼的表示形式及其作用

子網掩碼用二進制方式表示地話,也是一個32位的數字。它對應IP地址網絡標識部分的位全部為“1”,對應IP地址主機標識的部分則全部為“0”。由此,一個IP地址可以不再受限于自己的類別,而是可以用這樣的子網掩碼自由地定位自己的網絡標識長度。當然,子網掩碼必須是IP地址的首位連續的“1”。對于子網掩碼,目前有兩種表示方式:一種是用32位數字表示;另一種,則是在每個IP地址后面追加網絡地址的位數,用“/”隔開。
子網掩碼作用:用來區分IP地址的網絡號與主機號;當TCP/IP網絡上的主機相互通信時,就可以利用子網掩碼得知這些主機是否在相同的網絡區段內;用來將網絡分割為多個子網。

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

圖片1.png

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

  • 輸入命令ifconfig -a查看設備名稱;

  • 輸入命令ifconfig DEVICENAME IP進行IP地址設定;

  • 輸入命令vim /etc/sysconfig/network-script/DEVICENAME修改腳本;

    BOOTPROTO=static
    ONBOOT=yes
    IPADDR
    NETMASK
    GATEWAY
    DNS1
  • 輸入命令systemctl restart network.service進行服務重載;

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

臨時有效:使用命令ip或者ifconfig進行修改,立即生效;
永久生效:修改網卡配置腳本文件,需要重啟服務或者ifdown/ifup對網卡單獨操作;
使用圖形界面setup--網絡配置,需要重啟服務生效;

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

#!/bin/bash
#
trap 'exit 1' INT
declare -i i=1
for i in(seq 254);do
    if ping 172.16.250.$i -c 1 -W 1 &> /dev/null;then
        echo -e "\033[0;32;1m 172.16.250.$i is up! \033[0m"
    else
        echo -e "\033[0;31;1m 172.16.250.$i is down! \033[0m"
    fi
    let i++
done

Q7:詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;

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服務來控制接口;    #在CentOS 6及以前不啟用,一般用network)

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

#臨時生效:
使用ip / ifconfig輸入命令:
~]# ip addr add IP/mask dev eth0:0
~]# ifconfig IFACE_LABEL IPADDR/NETMASK            #其中IFACE_LABEL:eth0:0, eth0:1;

#修改配置文件:
DEVICE=IFACE_LABEL
BOOTPROTO:網上別名不支持動態獲取地址, static, none;

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

ifconfig命令:接口及地址查看和管理
    ifconfig  [INTERFACE]
    # ifconfig -a:顯示所有接口,包括inactive狀態的接口;
    ifconfig interface [aftype] options | address ...
    # ifconfig  IFACE  IP/MASK  [up|down]
    # ifconfig  IFACE  IP  netmask  NETMASK
    options:
    [-]promisc    混雜模式;
    ~]# ifconfig eth1 promisc    打開混雜模式;
    ~]# ifconfig eth1 -promisc    關閉混雜模式;

route命令:路由查看及管理
    查看:
    # 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  -net  0.0.0.0/0.0.0.0  gw 192.168.10.1  
          route add  default  gw 192.168.10.1      表示為默認網關
          【配置單個主機】options改為 -host即可 
    刪除:
    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命令:
    顯示路由表:netstat  -rn
    -r:顯示內核路由表
    -n:數字格式
    顯示網絡連接:
    netstat  [--tcp|-t]  [--udp|-u]  [--udplite|-U]  [--sctp|-S]  [--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:處于監聽狀態的連接
    -a:所有狀態
    -n:以數字格式顯示IP和Port;
    -e:擴展格式
    -p:顯示相關的進程及PID;
    常用組合:
    -tan,  -uan,  -tnl,  -unl,  -tunlp
顯示接口的統計數據:
    netstat    {--interfaces|-I|-i}    [iface]   [--all|-a]   [--extend|-e]   [--verbose|-v]   [--program|-p]  [--numeric|-n]
    所有接口:
    netstat  -i
    指定接口:
    netstat  -I<IFace>

    ifup/ifdown命令:
    注意:通過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口并完成配置;

ip命令:
    ip [ OPTIONS ] OBJECT { COMMAND | help }
    OBJECT := { link | addr | route | netns  }
    注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫;
    ip  OBJECT:
    ip link: network device configuration        網絡設備配置;
    ip  link  set - change device attributes        與ifconfig很相似,用于設置某屬性屬于什么狀態;
    <[dev] NAME (default)>:指明要管理的設備,dev關鍵字可省略;
    up和down:啟用或禁用接口;  ~]# ip link set [dev] eth1 up
    multicast on或multicast off:啟用或禁用多播功能;
    name NAME:重命名網絡接口;
    mtu NUMBER:設置MTU的大小,以太網接口默認為1500;
    netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間;
    ip  link  show  - display device attributes
    ip  link  help -  顯示簡要使用幫助;
    ip netns:  - manage network namespaces.
    ip  netns  list:列出所有的netns
    ip  netns  add  NAME:創建指定的netns
    ip  netns  del  NAME:刪除指定的netns
    ip  netns   exec  NAME  COMMAND:在指定的netns中運行命令
ip address - protocol address management.    用于協議地址管理,簡言之用于管理IP地址;
    ip address add - add new protocol address        添加新IP地址;
    ip  addr  add  IFADDR  dev  IFACE
    [label NAME]:為額外添加的地址(主地址以外)指明接口別名;
    [broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算得到;
    [scope SCOPE_VALUE]:(了解,不記也沒關系)scope表示作用域;
    global:全局可用;(大多數情況下,就使用這個)
    link:接口可用;
    host:僅本機可用;
    ip address delete - delete protocol address        刪除IP地址;
    ip addr  delete  IFADDR  dev  IFACE 
    ip address show - look at protocol addresses    查看IP地址;
    ip  addr   list  [IFACE]:顯示接口的地址;
    ip address flush - flush protocol addresses        刪除IP地址,清空所有的IP地址;
    ip  addr  flush  dev  IFACE

ip route - routing table management            #用于路由表管理命令;
    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]        #PREFIX指的是長度的掩碼;
    示例:
    # ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100
    # ip  route  add default  via  GW                        
    ip route delete - delete route                #刪除路由;
    ip  route  del  TYPE PRIFIX 
    示例:
    # ip  route delete  192.168.1.0/24
    ip route show - list routes                    #顯示路由信息;
    TYPE PRIFIX  
    ip route flush - flush routing tables        #清空路由表;
    TYPE  PRIFIX
    ip route get - get a single route            #獲取(指定的)單條路由;(了解即可)
    ip  route  get  TYPE PRIFIX
    示例:ip route  get  192.168.0.0/24

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

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

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]
安裝:
    rpm {-i|--install} [install-options] PACKAGE_FILE ...
    rpm  -ivh  PACKAGE_FILE ...
    GENERAL OPTIONS:
    -v:verbose,詳細信息
    -vv:更詳細的輸出
    [install-options]:
    -h:hash marks輸出進度條;每個#表示2%的進度;
    --test:測試安裝,檢查并報告依賴關系及沖突消息等;
    --nodeps:忽略依賴關系;不建議;
    --replacepkgs:重新安裝
    注意:rpm可以自帶腳本;
    四類:--noscripts
    preinstall:安裝過程開始之前運行的腳本,%pre , --nopre
    postinstall:安裝過程完成之后運行的腳本,%post , --nopost
    preuninstall:卸載過程真正開始執行之前運行的腳本,%preun, --nopreun 
    postuninstall:卸載過程完成之后運行的腳本,%postun , --nopostun
    --nosignature:不檢查包簽名信息,不檢查來源合法性;
    --nodigest:不檢查包完整性信息;
升級:
    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    -U:升級或安裝;
    -F:升級
    rpm  -Uvh PACKAGE_FILE ...
    rpm  -Fvh PACKAGE_FILE ...    純粹的升級操作;
    --oldpackage:降級;
    --force:強制升級;
    注意:(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,直接安裝新版本內核;
    (2) 如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸載:
    rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
    卸載時是PACKAGE_NAME,包名即可;
    --allmatches:卸載所有匹配指定名稱的程序包的各版本;
    --nodeps:忽略依賴關系
    --test:測試卸載,dry run模式
查詢:
    rpm {-q|--query} [select-options] [query-options]
    [select-options]
    PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
    -a, --all:查詢所有已經安裝過的包;
    -f  FILE:查詢指定的文件FILE由哪個程序包安裝生成;
    -p, --package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作;
    --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;
    --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;
    e.g.
    ~]# rpm -q --whatprovides bash        查詢bash安裝時的包的名稱;
    bash-4.2.46-19.el7.x86_64
    ~]# rpm -q --whatrequires bash        查詢bash被哪些程序包所依賴;
    dracut-033-359.el7.x86_64
    initscripts-9.49.30-1.el7.x86_64
    rsyslog-7.4.7-12.el7.x86_64
    lvm2-2.02.130-5.el7.x86_64
    [query-options]
    --changelog:查詢rpm包的changlog;
    -l, --list:程序安裝生成的所有文件列表;
    -i, --info:程序包相關的信息,版本號、大小、所屬的包組,等;
    -c, --configfiles:查詢指定的程序包提供的配置文件;
    -d, --docfiles:查詢指定的程序包提供的文檔;
    --provides:列出指定的程序包提供的所有的CAPABILITY;
    -R, --requires:查詢指定的程序包的依賴關系;
    --scripts:查看程序包自帶的腳本片斷;(四個腳本:安裝前、安裝、卸載、卸載后,其中安裝前和卸載后可以沒有)
用法:
    -qi  PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
    -qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...
校驗:
    rpm {-V|--verify} [select-options] [verify-options]    
    防止安裝包在發布的時候,被做了修改,開啟后門程序之類的;
    S file Size differs        文件大小發生改變;
    M Mode differs (includes permissions and file type)  權限發生改變;
    5 digest (formerly MD5 sum) differs  MD5碼發生改變,文件的內容完整性發生改變;
    D Device major/minor number mismatch  主次設備號不匹配;
    L readLink(2) path mismatch              readLink的路徑不匹配;
    U User ownership differs              屬主修改了;
    G Group ownership differs              屬組修改了;
    T mTime differs                          最近一次的時間戳修改了;
    P caPabilities differ                  caPabilities發生改變;

yum命令的用法:yum [options] [command] [package ...]
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包:
    list
    # yum list [all | glob_exp1] [glob_exp2] [...]
    # yum list {available|installed|updates} [glob_exp1] [...]
安裝程序包:
    install package1 [package2] [...]
    reinstall package1 [package2] [...]  (重新安裝)
升級程序包:
    update [package1] [package2] [...]
    downgrade package1 [package2] [...] (降級)
檢查可用升級:
    check-update
卸載程序包:        依賴于次程序包的也都會被卸載;
    remove | erase package1 [package2] [...]
查看程序包information:        顯示出類似于rpm -qi的結果;
    info [...]
查看指定的特性(可以是某文件)是由哪個程序包所提供:            顯示出類似于rpm -qf的結果;
    provides | whatprovides feature1 [feature2] [...]
清理本地緩存:    因為yum下載之后,程序包會自動刪除,元數據不會被刪除,用這個命令手動刪除;
    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:從各倉庫下載創建,無需自己去做,每次使用yum命令的時候會自動做的;
    makecache
搜索:
    search string1 [string2] [...]
    以指定的關鍵字搜索程序包名及summary信息;
查看指定包所依賴的capabilities:
    deplist package1 [package2] [...]
查看yum事務歷史:
    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安裝及升級本地程序包:
    yum localinstall rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use install)
yum localupdate rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use update)
包組管理的相關命令:
    yum groupinstall group1 [group2] [...]        安裝指定包組;組名可能要加“”;
    yum groupupdate group1 [group2] [...]            
    yum grouplist [hidden] [groupwildcard] [...]    顯示指定包組;
    yum groupremove group1 [group2] [...]
    yum groupinfo group1 [...]

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

(1)掛載光盤至某目錄
~]# mount -r /dev/cdrom /media/cdrom
(2)創建配置文件
~]# vim /etc/yum.repos.d/local.repo
[CentOS7]
name=CentOS7
baseurl=file:///media/cdrom
enable=1
gpgcheck=0

Q12:寫一個腳本,完成以下功能

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

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

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

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

#!/bin/bash
#
declare -i s=0
declare -i k=0
for i in $(ls /etc/rc.d/rc3.d/);do
    if [[ $i == S* ]];then
        echo $i.start
        s+=1
    fi
    if [[ $i == K* ]];then
                echo $i.stop
                k+=1
    fi
done
echo -e "S start:$s\nK start:$k"

Q13:寫一個腳本,完成以下功能

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

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

#!/bin/bash
#
[ $# -eq 0 ] && echo -e "User name(s) needed!\nPlease try again!" && exit 1

declare -i sum=0
for i in $@;do
        if id $i &> /dev/null;then
                sum+=$(id -u $i)
        else
                echo "$i not exits!"
        fi
done
echo "Exiting users' ID sum:$sum"

Q14:寫一個腳本

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

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

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

#!/bin/bash
#
if [ $# -lt 1 ];then
        echo -e "At least one arg!\nPlease try again!"
        exit 1
fi

declare -i dir=0
declare -i file=0
for i in $@;do
        if ls $i &> /dev/null;then
                for j in $(ls $i);do
                        if [ -d $i/$j ];then
                                let dir++
                        else [ -f $i/$j ]
                                let file++
                        fi
                done
        else
                echo "$i not exits!"
        fi
done
echo "directory number:$dir,file number:$file"

Q15:寫一個腳本:通過命令行傳遞一個參數給腳本,參數為用戶名,如果用戶的id號大于等于500,則顯示此用戶為普通用戶;

#!/bin/bash
#
if [ $# -lt 1 ];then
        echo "One arg is needed!"
        exit 1
fi

if id $1 &> /dev/null;then
        if [ `id -u $1` -ge 500 ];then
                echo "$1 is a nomal user."
        elif [ `id -u $1` -ge 1 ];then
                echo "$1 is a system user."
        else
                echo "$1 is a root user."
        fi
else
        echo "$1 not exits."
fi

Q16:寫一個腳本

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

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

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

#!/bin/bash
#
declare -i sum=0
for i in {1..10};do
        id user$i &> /dev/null && continue || useradd user$i && echo "user$i" | passwd --stdin $user$i
        sum+=1
done
echo "$sum users were added this time."

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

#!/bin/bash
#
trap 'exit 1' INT

for ((i=20;i<=100;i++));do
    if ping 172.16.250.$i -c 1 -W 1 &> /dev/null;then
        echo -e "172.16.250.$i is up!"
    fi
done

Q18:打印九九乘法表;

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

原創文章,作者:N24_VC,如若轉載,請注明出處:http://www.www58058.com/64663

(0)
N24_VCN24_VC
上一篇 2016-12-25 14:06
下一篇 2016-12-25 20:16

相關推薦

  • N25期–第十周作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 啟動過程 (PC架構)    POST –> Boot Sequence(BIOS) –> Boot Loader (MBR)–>GRUB—> Kernel(ramdisk) –> ro…

    Linux干貨 2017-03-13
  • Linux學習總結02—Linux的操作系統發展史(原創)

       我們都知道,在美國賓夕法尼亞大學,有那么一種計算機,叫ENIAC,這種機器耗電量是非常大,而且主機也是龐大,它誕生于1946年的2月14日的情人節,確實有紀念意義,就算是約炮也是拿著智能手機先搖一搖,好看就勾搭,不好看的就拉黑,這臺計算機可并不是造福人類的,只是計算數據,我想,當時的情況是這樣,在這臺計算機沒有出世之前,那幫工程師們…

    Linux干貨 2016-10-29
  • Linux運維之路-Linux基礎學習三

    先學會用戶組和文件的屬性,才知道怎么去管理

    Linux干貨 2017-11-26
  • 整型、浮點型在內存中的存儲方式

      在學習C語言的過程中,有時候會想,數據到底是以什么樣的方式在內存中存儲的呢?經過一段時間的查閱資料,小編終于整理了一些…… 以VC6.0編譯器為測試環境(int型為4Byte) 先簡介一下大小端模式,具體資料可參考 http://blog.csdn.net/ce123_zhouwei/article/details/6971544  …

    Linux干貨 2016-01-14
  • N26-第三周博客作業

    1、  列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 命令:who | cut -d' ' -f1 | sort –u 涉及知識點: l  who命令 作用:查看當前所有的登錄會話 l  cut命令 作用:將文本內容按照指定內容分割,然后取出指定字段。 常用選項: &…

    Linux干貨 2017-02-10
  • 網絡配置、nmcli

    CentOS 7 網絡屬性配置    rhel6 之前,網絡接口使用連續號碼命名:eth0 、eth1 等, 當增加或刪除網卡時,名稱可能會 發生變化    rhel7 使用基于硬件,設備拓撲和設置類型 命名:    (1) 網卡命名機制    &n…

    Linux干貨 2016-09-23
欧美性久久久久