馬哥教育網絡班20期 第8周課程練習

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

網橋:工作于數據鏈路層,實現多個lan之間數據的轉發,隔離沖突域,類似二層交換機。
集線器:工作于物理層,實現設備的接入,數據信號放大、中轉,共享信道。把一個端口接收的所有信號向所有端口分發出去
二層交換機:工作于數據鏈路層,可連接多個lan,根據幀的mac來轉發數據,隔離沖突域,端口較多
三層交換機:工作于二、三層,可連接多個網段,實現數據包路由和部分路由器功能,加快大型局域網內部的數據交換,能夠做到一次路由,多次轉發
路由器:工作于網絡層,實現不同網段數據的轉發,通過路由表把數據(IP 報文)傳送到正確的網絡隔離廣播域,多應用于廣域網

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

IP4 地址分類:IP 地址由32位二進制數字組成,根據前8位二進制數字不同分為5類
    class A:
        第1位為0
        0 0000000-0 1111111 即0-127
            即1.0.0.0 -126.255.255.255
            網絡數:126  ;0.0.0.0 127.0.0.0 保留
            每個網絡的主機數:2^24-2
            默認子網掩碼:255.0.0.0
            私網地址:10.0.0.0/8
    class B:
        第2位為0
        10 000000-10 111111 即128-191
            可用IP地址:即128..1.0.0-191.255.255.255 ; 128.0.0.0和191.255.0.0保留 
            網絡數:2^14
            每個網絡的主機數:2^16-2
            默認子網掩碼:255.255.0.0
            私網地址:127.16.0.0/16-127.31.0.0/16
    class C:
        第3位為0
        110 00000-110 11111 即192-223
            網絡數:2^21
            每個網絡的主機數:2^8-2
            默認子網掩碼:255.255.255.0
            私網地址:192.168.0.0/24-192.168.255.0/24
    
    class D:組播
        第4位為0
        1110 0000-1110 1111 即224-239
    class E:
        第5位為0,最后一個是255
        11110 000-11111 111 即240-255    
子網掩碼:
    表示形式:1、
               32位二進制數字,每8位二進制數字換算成十進制,以"."分隔,形如:255.255.255.0
              2、
               IP地址后加上掩碼位數,形如:192.168.0.104/24
    
    作用:劃分子網
              將某個IP地址劃分成網絡地址和主機地址兩部分,與IP地址相與可計算出的相應IP的網絡位

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

OSI模型:
    (1)、應用層
        功能:定義應用程序如何進入該層的溝通接口(應用層本身不屬于應用程序所有),可以將數據接收或發送給應用程序,展示給用戶
    (2)、表示層
        功能:將本地端應用程序的數據格式轉換成為網絡的標準格式,包括定義了網絡服務之間的數據格式轉換、數據的加解密
    (3)、會話層
        功能:定義兩個地址間的連接信道的連接與終斷,建立應用程序之間的會話、提供其他加強型服務如網絡管理等
    (4)、傳輸層
        功能:定義發送端與接收端的連接技術(TCP/UDP),包括:數據包格式、數據包的發送、流程的控制、傳輸過程的偵測檢查與重新傳送;確保數據包可以準確無誤的到達目的端
    (5)、網絡層
        功能:定義IP,路由(route),定義計算機之間的連接建立、終止與維持等,數據包數據的傳輸路徑選擇等
        物理設備:路由器、三層交換機等
    (6)、數據鏈路層
        功能:分為兩個子層:
            偏硬件介質部分:負責MAC(Madia Access Control)
            偏軟件部分:負責邏輯連接層(Logical Link Control ,LLC),將來自上層的數據包數據(packet)轉成MAC格式,包括:信息交換、流量控制、失誤問題的處理
        物理設備:網卡、網橋、二層交換機
    (7)、物理層
        功能:定義所使用的傳輸設備的電壓與信號等,了解數據幀轉成比特流的編碼方式,連接實際傳輸介質并發送/接收比特信號
        物理設備:集線器、網線、光纖、同軸電纜等
TCP/IP 模型:
    (1)、應用層
        功能:整合OSI模型應用層、表示層、會話層,
    (2)、運輸層
        功能:同OSI模型
    (3)、網絡層
        功能:同OSI模型
    (4)、網絡接口層
        功能:整合OSI模型的數據鏈路層、物理層

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

(1)、IP/mask
    配置方式:ifconfig [interface] 
                  # ifconfig IFACE IP/mask [up]       例如:ifconfig eth0 192.168.0.104/24 up
                  # ifconfig IFACE IP netmask MASK    例如:ifconfig eth0 192.168.0.104 netmask 255.255.255.              
(2)、路由:默認網關
    配置方式:route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If] 
                  例如:
                  目標:192.168.1.3  網關:172.16.0.1
                  ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 

(3)、DNS服務器
    配置方式:/etc/resolv.conf
       	          nameserver DNS_SERVER_IP1
       		  nameserver DNS_SERVER_IP2
       		  nameserver DNS_SERVER_IP3
 
(4)、
上面的配置方式是及時生效,但下次開機要重新配置
下面的配置方式是永久生效,但不是及時生效,要讓網絡服務重讀配置文件

修改配置文件:/etc/sysconfig/network-scripts/ifcfg-ethx:x
                   各項含義見題7

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

1.命令行方式
      a.ifconfig
      格式:ifconfig interface [aftype] options | address 
            # ifconfig IFACE IP/mask [up]
            # ifconfig IFACE IP netmask MASK
            例子:ifconfig eth0 192.168.0.107 netmask 255.255.255.0
                注意:立即生效
       
      b.ip
      ip - show / manipulate routing, devices, policy routing and tunnels
            格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
                  OBJECT := { link | addr | route }
            OBJECT link  :
                   ip link - network device configuration 
                   格式:ip link set deviFACE [up|down]
                              up and down:激活或禁用指定接口
                         ip link show deviFACE [up]
                              [up]:僅顯示處于激活狀態的接口
                   address:
                   ip address - protocol address management
                   格式:ip addr { add | del } IFADDR dev STRING
                               [label LABEL]:添加地址時指明網卡別名
                               [scope {global|link|host}]:指明作用域
                                       global: 全局可用
                                       link: 僅鏈接可用
                                       host: 本機可用
                               [broadcast ADDRESS]:指明廣播地址
                         ip address show - look at protocol addresses
			       [dev DEVICE]
			       [label PATTERN]
			       [primary and secondary] 
			 ip address flush - flush protocol addresses
			       使用格式同show      
                   route:
                        ip route - routing table management
                        格式:ip route add
                                  添加路由: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 delete 
                                  刪除路由:ip route del TARGET
                             ip route show
                             ip route flush   
                                  dev IFACE]    
                                  [via PREFIX]
      c.route命令
            查看:route -n
            添加:route add
                  route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]
                  目標:192.168.1.3  網關:172.16.0.1
                  ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
                  目標:192.168.0.0 網關:172.16.0.1
                  ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
                  ~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
                  默認路由,網關:172.16.0.1
                  ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
                  ~]# route add default gw 172.16.0.1
            刪除:route del
                  route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
                  目標:192.168.1.3  網關:172.16.0.1
                  ~]# route del -host 192.168.1.3
                  目標:192.168.0.0 網關:172.16.0.1
                  ~]# route del -net 192.168.0.0 netmask 255.255.255.0

2.修改配置文件方式
# vim /etc/sysconfig/network-scripts/ifcfg-IFACE
(修改信息如上題所示)

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

#!/bin/bash
#the purpose of program:
#Use ping command to check the network's PC state 
#History 
#08/09/2016 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
network="172.16.250." 
for sitenu in $(seq 1 254);do
    ping -c 1 -w 1 ${network}${sitenu} &> /dev/null && result=0 || result=1
    if [ "$result" == 0 ];then 
        echo -e "\033[32m ${network}${sitenu} is up \033[0m"
    else 
        echo -e "\033[31m ${network}${sitenu} is down \033[0m"
    fi
done

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

/etc/sysconfig/network-scripts/ifcfg-ethx:x
                        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:普通用戶是否可控制此設備;
/etc/sysconfig/network-scripts/route-eth0
                        ADDRESS0=192.168.193.131
                        NETMASK0=255.255.255.0
                        GATEWAY0=192.168.193.0
                        兩種風格:
                         (1) TARGET via GW
                         (2) 每三行定義一條路由(#為0、1、2、3、4)
                          ADDRESS#=TARGET # IP地址
                          NETMASK#=mask   # 子網掩碼
                          GATEWAY#=GW     # 網關			

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

給網卡配置多地址:
			ifconfig:
				ifconfig IFACE_ALIAS 
			ip
				ip addr add 
			配置文件:
				ifcfg-IFACE_ALIAS
					DEVICE=IFACE_ALIAS

			注意:網關別名不能使用dhcp協議引導;

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

      a.ifconfig;b.ip c.route 見題5
      d.ss 
        [root@www ~]# ss -tunl
        Netid State      Recv-Q Send-Q                                Local Address:Port                                  Peer Address:Port 
        udp   UNCONN     0      0                                                 *:68                                               *:*     
        tcp   LISTEN     0      128                                              :::22                                              :::*     
        tcp   LISTEN     0      128                                               *:22                                               *:*     
        tcp   LISTEN     0      100                                             ::1:25                                              :::*     
        tcp   LISTEN     0      100                                       127.0.0.1:25                                               *:*
      e.netstat 
        [root@www ~]# netstat -tunl
        Active Internet connections (only servers)
        Proto Recv-Q Send-Q Local Address               Foreign Address             State      
        tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
        tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
        tcp        0      0 :::22                       :::*                        LISTEN      
        tcp        0      0 ::1:25                      :::*                        LISTEN      
        udp        0      0 0.0.0.0:68                  0.0.0.0:*

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

Linux系統軟件包管理方法:安裝、升級、查詢、卸載、校驗、數據庫維護
一、安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
           -v: verbose
           -h: 以#顯示程序包管理執行進度;每個#表示2%的進度
# rpm -ivh PACKAGE_FILE ...
[install-options]
  --test: 測試安裝,但不真正執行安裝過程;dry run模式;
  --nodeps:忽略依賴關系;
  --replacepkgs: 重新安裝;
  --nosignature: 不檢查來源合法性;
  --nodigest:不檢查包完整性;
  --noscipts:不執行程序包腳本片斷;
  %pre: 安裝前腳本; --nopre
  %post: 安裝后腳本; --nopost
  %preun: 卸載前腳本; --nopreun
  %postun: 卸載后腳本; --nopostun
二、升級:
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: 強行升級;
注意:
(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版本內核;
(2) 如果原程序包的配置文件安裝后曾被修改,長級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留;
三、查詢:
rpm {-q|--query} [select-options] [query-options] [select-options]
    -a: 所有包
    -f: 查看指定的文件由哪個程序包安裝生成
    -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包文件做查詢操作;
    --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供;
    --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;
 [query-options]
           --changelog:查詢rpm包的changlog
           -c: 查詢程序的配置文件
           -d: 查詢程序的文檔
           -i: information(名稱、版本、描述信息、安裝日期、包大小、許可證、MIT...)
           -l: 查看指定的程序包安裝后生成的所有文件;
           --scripts:程序包自帶的腳本片斷
           -R: 查詢指定的程序包所依賴的CAPABILITY;
           --provides: 列出指定程序包所提供的CAPABILITY;
用法:
# rpm -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
# rpm -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...
# rpm -qa
四、卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME
  擦除 忽略依賴關系 、不執行腳本、 測試
五、校驗:
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(路徑不匹配)
   U User ownership differs(屬主不匹配)
  G Group ownership differs(屬組不匹配)
  T mTime differs(最近一次修改時間不匹配)
  P caPabilities differ(能力不同)
六、數據庫重建:
rpm {--initdb|--rebuilddb}
    initdb: 初始化
       如果事先不存在數據庫,則新建之;否則,不執行任何操作;
    rebuilddb:重建
       無論當前存在與否,直接重新創建數據庫;
七、管理程序包,yum的使用:
yum的命令行選項:
   --nogpgcheck:禁止進行gpg check;
   -y: 自動回答為“yes”;
   -q:靜默模式;
    --disablerepo=repoidglob:臨時禁用此處指定的repo;
    --enablerepo=repoidglob:臨時啟用此處指定的repo;
   --noplugins:禁用所有插件;
1、顯示倉庫列表:
      # yum repolist [all|enabled|disabled] [所有|啟用|禁用]
2、顯示程序包:
      # yum list [all | glob_exp1] [glob_exp2] [...](glob風格匹配符)
      # yum list {available|installed|updates} [glob_exp1] [...]{倉庫中有尚未安裝|已安裝|可用升級包}
3、安裝程序包:
  # yum install package1 [package2] [...]
  # yum reinstall package1 [package2] [...]  (重新安裝)
4、 升級程序包:
  # yum update [package1] [package2] [...]
  # yum downgrade package1 [package2] [...] (降級)
5、檢查可用升級:
  # yum check-update
6、卸載程序包:
  # yum remove | erase package1 [package2] [...](與之依賴的程序包也會被卸載)
7、查看程序包information:
  # yum info [...]
8、查看指定的特性(可以是某文件)是由哪個程序包所提供:
  # yum provides | whatprovides feature1 [feature2] [...]
9、清理本地緩存:
  # yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
               【程序包 | 元數據 |過期緩存 |rpm庫 | 插件 |所有】
10、構建緩存:
  # yum makecache
11、搜索:
  # yum search string1 [string2] [...] 以指定的關鍵字搜索程序包名及summary信息;
12、查看指定包所依賴的capabilities:
  # yum deplist package1 [package2] [...]
13、查看yum事務歷史:
  # yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
[list:默認;packages-list:包列表;summary摘要信息;stats統計數據]
14、安裝及升級本地程序包:
  # yum localinstall rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use install)
  # yum localupdate rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use update)
15、包組管理的相關命令:
  # yum groupinstall group1 [group2] [...] (安裝)
  # yum groupupdate group1 [group2] [...](升級)
  # yum grouplist [hidden] [groupwildcard] [...](顯示)
  # yum groupremove group1 [group2] [...](移除)
  # yum groupinfo group1 [...](查看包組相關信息)
16、yum的repo配置文件中可用的變量:
             $releasever: 當前OS的發行版的主版本號;
             $arch: 平臺;
             $basearch:基礎平臺;
             $YUM0-$YUM9
17、創建yum倉庫:
# yum create repo [options] <directory>

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

[root@www ~]# mkdir /media/cdrom
[root@www ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom
 在/etc/yum.repos.d/創建.repo 結尾的配置文件:
      [CDROM]
      name=Centos_cdrom
      baseurl=file:///mdia/cdrom
      gpgcheck=1
      enabled=1

12、寫一個腳本,完成以下功能
   (1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
   (2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
   (3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
   (4) 分別統計S開頭和K開頭的文件各有多少;

#!/bin/bash
#the purpose of program:
#
#History 
#08/10/2016
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
dirname=/etc/rc.d/rc3.d
sumk=0
sums=0
cd ${dirname}
for i in $(ls K*);do
    echo "$i stop"
    let sumk++
done
for j in $(ls S*);do
    echo "$j start"
    let sums++
done 
echo "the number of k start file :$sumk "   
echo "the number of s start file :$sums "

13、寫一個腳本,完成以下功能
   (1) 腳本能接受用戶名作為參數;
   (2) 計算此些用戶的ID之和;

#!/bin/bash
#
read -p "input your user name " nameuser
while [ ${nameuser} != "quit" ];do
    id ${nameuser} &> /dev/null && result=0 ||result=1
    if [ ${result} -eq 1 ];then 
        read -p "Please input your user name again,your user name is not exist: " nameuser 
        continue
    fi    
    userid=$(id -u ${nameuser})
    let sumid+=$userid
    read -p "input your user name again:" nameuser
done
    echo "the sum of these user's ID is ${sumid}."

14、寫一個腳本
   (1) 傳遞一些目錄給此腳本;
   (2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
   (3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;

#!/bin/bash
#the purpose of program:
#
#History 
#08/10/2016 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
numdir=0
numtype=0
func1 (){
       if [ -b $1 ];then
           echo "$1 is a block device"
           let numtype++
           continue
       fi
       if [ -c $1 ];then
           echo "$1 is a character device"
           let numtype++
           continue
       fi 
       if [ -S $1 ];then
           echo "$1 is a Socket"
           let numtype++
           continue
       fi 
       if [ -p $1 ];then
           echo "$1 is a pipe file"
           let numtype++
           continue
       fi 
       if [ -L $1 ];then
           echo "$1 is a link file"
           let numtype++
           continue
       fi
       if [ -d $1 ];then
           echo "$1 is a directory"
           func2 $1
           continue
       fi
       if [ -f $1 ];then
           echo "$1 is a file"
           let numtype++
           continue
       fi
}
func2 (){
        cd $1
        for k in $(ls );do
            func1 $k
            cd ..
        done
        
}
read -p "input one directory as you like,and input "quit" is exit :" namedir
while [ "$namedir" != "quit" ];do
    if [ ! -d $namedir ];then
        read -p "input one directory again,because your input is not a directory: " namedir
        continue
    fi
    cd $namedir
    let numdir++
    for i in $(ls );do
       func1 $i
       cd $namedir
    done
    read -p "input one directory as you like,and input "quit" is exit :" namedir    
done
echo "we has $numdir directory in total"
echo "$numtype file type in total"

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

#!/bin/bash
#the purpose of program:
#decide Type of user 
#History 
#08/10/2016 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
declare -i usersid=$(grep --color=auto "^$1" /etc/passwd |cut -d: -f 3)
if [ ${usersid} -gt 500 ];then
    echo "the user $1 is common user!"
fi

16、寫一個腳本
   (1) 添加10用戶user1-user10;密碼同用戶名;
   (2) 用戶不存在時才添加;存在時則跳過;
   (3) 最后顯示本次共添加了多少用戶;

#!/bin/bash
#the purpose of program:
#add users 
#History 
#08/10/2016 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
declare -i j=0
for i in $(seq 1 10);do
    username="user${i}"
    id ${username} &> /dev/null && result=0 ||result=1
    if [ ${result} -eq 1 ];then 
        useradd ${username}
        echo '${username}'|passwd --stdin ${username}
        let j++ 
    fi
done
echo "we add ${j} users in total"

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

#!/bin/bash
#the purpose of program:
#Use ping command to check the network's PC state 
#History 
#08/10/2016 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
network="172.16.250." 
for sitenu in $(seq 20 100);do
    ping -c 1 -w 1 ${network}${sitenu} &> /dev/null && result=0 || result=1
    if [ "$result" == 0 ];then 
        echo -e "\033[32m ${network}${sitenu} is up \033[0m"
    fi
done

18、打印九九乘法表;

#!/bin/bash
#the purpose of program:
# print multiplication table 
#History 
#08/10/2016 
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
declare -i row=1
declare -i col=1
while [ ${row} -le 9 ];do
    while [ ${col} -le ${row} ];do
        total=$((${col}*${row}))
        echo -e -n "${col}*${row}=${total}\t"
        let col=col+1
    done
    echo -e -n "\n"
    let col=1
    let row=row+1
done

原創文章,作者:N20-重慶-雪寒,如若轉載,請注明出處:http://www.www58058.com/18705

(0)
N20-重慶-雪寒N20-重慶-雪寒
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • N21天天第十五周課程練習

    1、總結sed和awk的詳細用法; sed Sed本質上是一個編輯器,但是它是非交互式的;同時它又是面向字符流的,輸入的字符流經過sed的處理后輸出。 Sed本身是一個管道命令,可以分析standard input的,主要是用來分析關鍵字的使用、統計等,此外還可以將數據進行替換、刪除、   選取特定行等功能 格式:sed&nbs…

    Linux干貨 2016-12-05
  • 部署LAMP之WordPress, PMA(https), Discuz

    一、環境介紹     系統:CentOS 6.7     軟件:httpd-2.2, mysql-5.3, wordpress-4.3, pma4.0     網絡:       …

    Linux干貨 2016-03-24
  • 27期第一周學習小結

    第一周 1. 描述計算機的組成及其功能。 計算機主要組成部分以下五種:運算器,控制器,存儲器,輸入設備,輸出設備。 運算器的功能是對數據進行算術運算與邏輯運算,就是對數據進行加工處理。 控制器的功能是調度二進制程序,數據,內存尋址,以及協調計算機輸入設備和輸出設備等各計算機部件之間的正常工作。 存儲器的功能是存儲二進制指令和數據。存儲器是編址存儲單元。 輸入…

    Linux干貨 2017-07-15
  • 第5周

    1, ~]# grep "^root\>" /etc/passwd | cut -d: -f7 4,~]# ifconfig | grep "\<[0-9][0-9][0-9]\>" 7, ~]# find /var -user root -group mail 8,~]# fin…

    Linux干貨 2016-09-15
  • linux 查找過濾及用戶和組管理命令的一些事例

    1.列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ~]# who | cut -d' ' -f1 | sort | uniq 2.列出最后登錄到當前系統的用戶的相關信息。 ~]# last | head -1 3.列出當前系統上被用戶當作其默認shell的最多的那個shell。  ~]#…

    Linux干貨 2016-10-05
  • linux路由轉發(軟路由)實驗

        一。實驗網絡拓撲             (R1,R2由 Linux 虛擬機添加雙網卡做軟路由實現)              &n…

    Linux干貨 2016-09-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-17 13:59

    寫的很好,排版也很棒,加油

欧美性久久久久