Homework Week-8 網絡及腳本編程

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

設備

功能

使用場景

網橋

用于連接不同網段,將相似的網絡連接起來,隔離信息。

連接不同部門間的局域網;連接地理位置分散并且相距較遠的局域網,可以增加工作的物理距離;采用由網橋連接的多個局域網調節負載;網橋可以設置在局域網的關鍵部位,防止單點失常而破壞整個系統等。

集線器

對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。發送的數據沒有針對性,而是采用廣播方式發送。

局域網中

二層交換機

工作于OSI模型的第二層,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。

三層交換機

OSI模型中第三層實現數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀態做到最優網絡性能。

核心骨干網

路由器

連接不同的網絡

局域網、廣域網中

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

類別

IP地址范圍

子網掩碼

私有IP地址范圍

A

0.0.0.0-127.255.255.255

255.0.0.0

10.0.0.0-10.255.255.255

B

128.0.0.0-191.255.255.255

255.255.0.0

172.16.0.0-172.31.255.255

C

192.0.0.0-223.255.255.255

255.255.255.0

192.168.0.0-192.168.255.255

IP地址與子網掩碼按位進行“與”運算可以得出設備所在的網絡地址

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

OSI模型七層

功能

物理設備

應用層 Application

網絡服務與使用者應用程序間的一個接口

終端設備(PC、手機、平板等)

表示層 Presentation

數據表示、數據安全、數據壓縮

終端設備(PC、手機、平板等)

會話層 Session

會話層連接到傳輸層的映射;會話連接的流量控制;數據傳輸;會話連接恢復與釋放;會話連接管理、差錯控制

終端設備(PC、手機、平板等)

傳輸層 Transport

用一個尋址機制來標識一個特定的應用程序(端口號)

終端設備(PC、手機、平板等)

網絡層 Network

基于網絡層地址(IP地址)進行不同網絡系統間的路徑選擇

路由器

數據鏈路層 Data Link

在物理層上建立、撤銷、標識邏輯鏈接和鏈路復用 以及差錯校驗等功能。通過使用接收系統的硬件地址或物理地址來尋址

網橋、交換機

物理層Physical

建立、維護和取消物理連接

光纖、同軸電纜、

雙絞線、網卡、中繼器

 

TCP/IP模型四層

功能

應用層

為用戶提供所需要的各種服務,例如:FTP、TelnetDNS、SMTP

傳輸層

應用層實體提供端到端的通信功能,保證了數據包的順序傳送及數據的完整性。該層定義了兩個主要的協議:傳輸控制協議TCP)和用戶數據報協議UDP)

網際互聯層

主要解決主機到主機的通信問題。它所包含的協議設計數據包在整個網絡上的邏輯傳輸。注重重新賦予主機一個IP地址來完成對主機的尋址,它還負責數據包在多種網絡中的路由。該層有三個主要協議:網際協議IP)、互聯網組管理協議(IGMP)和互聯網控制報文協議(ICMP

網絡接入層

網絡接入層與OSI參考模型中的物理層數據鏈路層相對應。它負責監視數據在主機和網絡之間的交換

 

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

1編輯ifcfg-eno16777736文件如下:
# vim  /etc/sysconfig/network-scripts/ifcfg-eno16777736
DEVICE="eno16777736"
TYPE="Ethernet"
UUID="414bf4dd-3cbd-466a-b48b-da00c3f790aa"
ONBOOT=yes
BOOTPROTO=static
DNS1=114.114.114.114
IPADDR=192.168.1.103
NETMASK=255.255.255.0
GETWAY=192.168.1.1
NETWORK=192.168.1.0
BROADCAST=192.168.1.255

2保存文件并退出

3重啟網絡服務
#service network restart

4ping網關
#ping 192.168.1.1

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

1通過配置文件配置(/etc/sysconfig/network-scripts/ifcfg-eno16777736)

2Linux安裝時進行配置

3通過圖形化界面配置

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

    在線的主機使用綠色顯示;

    不在線的主使用紅色顯示;

#!/bin/bash
#Elephant
for i in {1..254} ; do
         ping -c 1 172.16.250.$i | grep "Unreachable" >> /dev/null
         if [ $? -eq 0 ] ; then
                 echo -e "\033[31m172.16.250.$i\033[0m"
         else
                 echo -e "\033[32m172.16.250.$i\033[0m"
         fi
done

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

網絡接口配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE,IFACE:接口名稱;

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、如何給網絡接口配置多個地址,有哪些方式?

給接口配置多個地址:

ip addr之外,ifconfig或配置文件都可以;
(1) ifconfig  IFACE_LABEL  IPADDR/NETMASK
  IFACE_LABEL: eth0:0, eth0:1, ...
(2) 為別名添加配置文件;
  DEVICE=IFACE_LABEL
  BOOTPROTO:網上別名不支持動態獲取地址;
    static, none

 

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

ifconfig命令
#ifconfig  激活狀態  UP處于激活
#ifconfig eno1677736
#ifconfig -a 所有接口,含非激活狀態
#ifconfig  eno16777736  192.168.1.103/24 up
#ifconfig  eno16777736  192.168.1.103  netmask  255.255.255.0
#ifconfig eth1  promisc  混雜模式
#ifconfig  eth1  -promisc

route命令
#route -n 數字格式顯示路由信息
#route
#route  add  -net  10.0.0.0/8  gw  192.168.10.1  dev  eth1
#route  del  -net  10.0.0.0/8
#route  del  default  刪除默認網關

netstat命令
#netstat  -rn
#route  -n 以上兩命令相似
#netstat  -t
#netstat  -tn
#netstat  -u
#netstat  -un
#netstat  -unl
#netstat  -tunl
#netstat  -tunlp
#netstat  -tan   TCP的所有狀態連接
#netstat  -uan
#netstat  -tne  e擴展格式
#netstat  -tnl
#netstat  -I eth0
#netstat  -i

hostname
#hostnamectl  status
#hostnamectl  set-hostname  magedu.com

DNS
#cat /etc/hosts
#vim  /etc/hosts
添加一行
172.16.10.6  www.magedu.com   www  magedu
#ping  www.magedu.com
#ping www
#ping magedu
#dig  -t  A  www.magedu.com    #dig測試不檢查hosts,ping命令先檢查hosts    主機->IP
#dig  -x  101.200.188.233   IP->FQDN

——————

iproute 2家族:ipss命令

#rpm -qi  iproute
#uname  -r  顯示內核版本
#rpm  -ql  iproute

 

ip命令
#ip  link  show   與ifconfig相似  二層設備相關屬性
#ip  link  list
#ip  link  set  eth1  down
#ip  link  show
#ip  link  set  eth1  up
#ip  link  show
#ip  link  set  eth1  multicast  on
#ip  link  show
#ip  link  set  eth1  multicast  off
#ip  link  show
#ip  link  set  eth1  down
#ip  link  set  eth1  name  eno12
#ip  link  set  eth1  down
#ip  link  show
#ip  link  set  eth1  up

 

centos
#ip  netns  add  mynet網絡名稱空間
#ip  link  show
#ip  link  set  eno136777736  netns  mynet
#ip  link  show
#ip  netns  exec  mynet  ip  link  show  在空間中執行命令
#ip  netns  del  mynet 
 
#ip ad  show
#ip  ad  li
#ip  address  add  192.168.10.100/24  dev  eth1
#ifconfig  eth1  0  刪地址
#ip  address  add  192.168.10.100/24  dev  eth1
#ip  addr  show  eth1
#ifconfig  eth1
#ip  address  add  192.168.10.101/24  dev  eth1
#ifconfig  eth1
#ip  addr  add  10.1.1.10/8  dev  eth1  #label  eth1:0加別名
#ip  addr  show  eth1
#ifconfig  eth1  加別名后可顯示多ip
#ip  addr  list  eth1
#ip  addr  del  10.0.10.100/8  dev  eth1
#ip  addr  flush  dev  eth1
#ip  addr  show  eth1

 

ip  route  
#ip  route  list
#ip  addr add 10.0.10.100/8  dev  eth1
#ip  addr  add 10.0.20.100/8  dev  eth1
#ip  addr  list  eth1
#ip  route  add  192.168.0.0/24  via 10.0.0.1  dev  eht1
#ip  route  list
#ip  route add  192.168.1.0/24  via  10.0.0.1  dev eth1  src  10.0.20.100
#ip  route  list
#ip  route  add  default  via  172.16.0.1  dev  eth0
#ip  route  delete  192.168.1.0/24
#ip  route  show  src  172.16.100.6
#ip  route  get  192.168.0.0/24
#ip  route flush  10/8

ss命令
#ss  -tnl
#ss  -tan
#ss  -tan  state  ESTABLISHED
#ss  -tan  `(dport=:22 or sport=:22)·

network 命令
#chkconfig  --list
 
C6
#service  network  restart  修改配置文件后,重啟設備
 
C7
#systemctl
 
#ip  route add  10.0.0.0/8  via  192.168.10.1  立即生效
#ip  route  list
 
#vim  route-eno33554984
10.0.0.0 via  192.168.10.1
#systemctl  restart  network.service
#ip  route  list
#vim  rote-en
ADDRESS0=20.0.0.0
NETMASK=255.0.0.0
GETWAY=192.168.10.2

nmcli(centos7)
 
#nmcli  device  status
#nmcli  device  connect  eno33554984
#nmcli  device  disconnect  eno33554984
#nmcli  conn  show
#nmcli  conn  modify  eno33554984  t  ipv4.address 192.168.30.100
#nmcli  conn  down  eno33594984
#nmcli  conn  up  eno33594984  配置生效

 

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

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]
安裝:-i, --install
升級:-U, --update, -F, --freshen
卸載:-e, --erase
查詢:-q, --query
校驗:-V, --verify
數據庫維護:--builddb, --initdb

 

安裝:
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:重新安裝
--nosignature:不檢查包簽名信息,不檢查來源合法性;
--nodigest:不檢查包完整性信息;
注意:rpm可以自帶腳本;
四類:--noscripts
preinstall:安裝過程開始之前運行的腳本,%pre , --nopre
postinstall:安裝過程完成之后運行的腳本,%post , --nopost
preuninstall:卸載過程真正開始執行之前運行的腳本,%preun, --nopreun 
postuninstall:卸載過程完成之后運行的腳本,%postun , --nopostun

 

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

如何使用光盤當作本地yum倉庫:
        (1) 掛載光盤至某目錄,例如/media/cdrom
          # mount -r -t iso9660 /dev/cdrom /media/cdrom
        (2) 創建配置文件
        [CentOS7]
        name=
        baseurl=
        gpgcheck=
        enabled=
yum的命令行選項:
--nogpgcheck:禁止進行gpg check;
-y: 自動回答為“yes”;
-q:靜默模式;
--disablerepo=repoidglob:臨時禁用此處指定的repo;
--enablerepo=repoidglob:臨時啟用此處指定的repo;
--noplugins:禁用所有插件;
例,centos7使用本地光盤yum倉庫
#cd  /etc/yum.repos.d/
#vim  local.repo
[base]
name=CentOS 7 Release ...
baseurl=file:\\\media/cdrom
enabled=1
gpgcheck=0
#yum repolist

 

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

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

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

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

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

#!/bin/bash
#Elephant
ls -l /etc/rc.d/rc3.d | awk ' { if (substr($9,1,1)=="K")
                        {printf $9" stop \n";statek[$NF]++;} 
                    else if (substr($9,1,1)=="S") 
                           {printf $9" start \n";states[$NF]++;}
                    }
                END {printf "S total " length(states)"\n";
                         printf "K total " length(statek)"\n";} '

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

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

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

#!/bin/bash
#Elephant
if [ $# -eq 0 ];then
         echo "At least one user"
         exit 2
else
         declare -i sumid=0
         for user in $@;do
                   userid=$(grep "^$1\>" /etc/passwd | cut -f 3 -d:)
                   sumid=$sumid+$userid
                   shift
         done
         echo "user(s) total id is $sumid"
fi

14、寫一個腳本  

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

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

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

#!/bin/bash
#Elephant
if [ $# -eq 0 ] ;then
         echo "At least one dir"
         exit 2
else
         for dir in $@ ; do
               e=""
               export e
               declare -i  countfiles=0
               export countfile
               declare -i countdirs=0
               export countdirs
               ls -l $dir | awk '{if(substr($1,1,1)=="-")
                       {
                        a="'$dir'";
                        b="/";
                        d=$9;
                        c=(a""b);
                        e=(c""d);
                        ENVIRON["e"]=e;
                        system("cat "e"");
                        ENVIRON["countfiles"]++;
                        printf "=============>"ENVIRON["e"] " is NO."ENVIRON["countfiles"]" file in ""'$dir'""\n---------------------------------------------\n";
                        }
                    else
                        if(substr($1,1,1)=="d")
                        {a="'$dir'";
                         b="/";
                         d=$9;
                         c=(a""b)
                         e=(c""d)
                        ENVIRON["e"]=e;
                        ENVIRON["countdirs"]++;
                        system("ls -l "e"");
                        printf "==============>"ENVIRON["e"]" is NO."ENVIRON["countdirs"]" dir in ""'$dir'""\n---------------------------------------------\n";
}'
        done
fi

 

15、寫一個腳本

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

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

#!/bin/bash
#Elephant
if ! [ $# -eq "1" ];then
         echo "We only need one user"
         exit 2
else
         declare -i userid
         userid=$(grep "^$1\>" /etc/passwd | cut -f3 -d:)
         if [ $userid -ge 500 ];then
                   echo "$1 is a common user"
         fi
fi

16、寫一個腳本  

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

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

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

#!/bin/bash
#Elephant
declare -i tt=0
for i in {1..10};do
         id user$i &> /dev/null
         if  [ $? -eq 0 ] ; then
                   echo "user$i exits "
         else
                   useradd user$i
                   let tt++
                   echo "user$i" | passwd --stdin user$i             
         fi
done
echo "We created $tt user(s)"

 

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

#!/bin/bash
#Elephant
for i in {20..100} ; do
         ping -c 1 172.16.250.$i | grep "Unreachable" >> /dev/null
         if ![ $? -eq 0 ] ; then
                   echo "172.16.250.$i"
         fi
done

 

18、打印九九乘法表;

#!/bin/bash
#Elephant
 
for i in {1..9};do
         j=1
         while [ $j -le $i ];do
                   printf "$i*$j=$[$i*$j] \t"
                   let j++
         done
         printf "\n"
done
運行結果:
1*1=1     
2*1=2      2*2=4     
3*1=3      3*2=6   3*3=9     
4*1=4      4*2=8   4*3=12   4*4=16  
5*1=5      5*2=10   5*3=15   5*4=20   5*5=25  
6*1=6      6*2=12   6*3=18   6*4=24   6*5=30   6*6=36  
7*1=7      7*2=14   7*3=21   7*4=28   7*5=35   7*6=42   7*7=49  
8*1=8      8*2=16   8*3=24   8*4=32   8*5=40   8*6=48   8*7=56   8*8=64  
9*1=9      9*2=18   9*3=27   9*4=36   9*5=45   9*6=54   9*7=63   9*8=72   9*9=81

 

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

(0)
N22_ElephantN22_Elephant
上一篇 2016-10-09
下一篇 2016-10-09

相關推薦

  • 馬哥教育網絡班21期第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who | cut -d" " -f 1 |sort |uniq 2、取出最后登錄到當前系統的用戶的相關信息。 last | head -…

    Linux干貨 2016-07-29
  • 配置路由實例

    路由的分類和管理 路由:跨網絡通信; 路由分類:     主機路由     網絡路由     默認路由 路由管理命令: route 命令是在本地 IP 路由表中顯示和修改條目網絡命令; 查看:route -n 添加:route add ro…

    Linux干貨 2016-09-12
  • 也許你根本不會用百度搜索

    搜索引擎可以幫助使用者在Internet上找到特定的信息,但它們同時也會返回大量無關的信息。但是如果多使用一些技巧,你將發現搜索引擎會花盡可能少的時間找到你需要的確切信息。 1.簡單查詢 這個就是最簡單便捷的使用方式,其實也是我們大多數人平時使用百度或者其他搜索引擎的方式。比如你想查培訓學校,那么你的第一反應肯定就是在百度里輸入【挖掘機】【挖掘機學?!俊舅{翔…

    2015-03-02
  • Linux文本處理工具grep,egrep

    簡介:     grep即(Global search REgular expression and Print out the line)全局的搜索正則表達式并且打印顯示出來。     通俗點講:根據用戶指定的文本模式(搜索條件)對目標文件進行逐行搜索,顯示能匹配到的行。 &n…

    Linux干貨 2015-05-11
  • 8.2日作業

    8.2作業 1、在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾。   先將文件目錄的屬組變更為g1 ,chmod  g+s /data/testdir/    …

    Linux干貨 2016-08-08
  • 生產環境日志審計

         日志審計,就是記錄所有系統和相關用戶行為的信息,并且可以自動分析,處理。在中小企業環境中,一般都是在單個服務器上記錄日志,而大型企業的生產環境當中,會有專門的日志服務器乃至集群。本文通過sudo配合centos自帶的rsyslog(syslog)服務,進行日志審計。    &nb…

    Linux干貨 2016-10-20

評論列表(2條)

  • luoweiro
    luoweiro 2016-10-11 23:35

    對于TCP/IP的相關知識希望能有對建連和斷開有全面的認知,整個過程還是要很熟練的,加油。

    • N22_Elephant
      N22_Elephant 2016-10-12 10:00

      @luoweiro嗯嗯,看到那塊視頻了,有了深入理解

欧美性久久久久