網絡知識及寫腳本,一個又一個

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

集線器是屬于物理層的設備,可以理解為一根網線中間串接出了多個接口,這么多接口共享這一根網線的帶寬, 因此這些接口上的設備在使得網絡時就會出現沖突,或者‘道路’擠占的情況。(所有的設備在一個廣播域,沖突域中),集線器現在很少使用了。

交換機、網橋都是數據鏈路層的設備,網橋的出現就是為了解決集線器多個接口共處于一個沖突域的問題,網橋具有2個接口, 且每個接口設備發送接收數據都是獨立的互不影響(每個接口是一個沖突域)。現在這種設備不再使用。 交換機可以理解為是一個多接口的網橋,當然具備了網橋分割沖突的功能(每個接口是一個沖突域)。 但是交換機(2層交換機)所有接口都在一個廣播域中。

路由器屬于網絡層設備,路由器不但可以隔離沖突域,同時也可以隔離廣播。每個接口是一個沖突域,一個廣播域。 路由器對于廣播數據包不做轉發。路由器根據3層地址(現用的IP地址)進行轉發數據包到相應的接口。實現不同的IP網段互相通訊。

二層交換機屬數據鏈路層設備,可以識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。

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

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

IP地址分類

一般分類是指ipv4, IP地址有5類,A類到E類,各用在不同類型的網絡中。地址分類反映了網絡的大小以及數據包是單播還是組播的。

A類到C類地址用于單點編址方法,但每一類代表著不同的網絡大小。 A類地址(1.0.0.0-126.255.255.255)用于最大型的網絡,該網絡的節點數可達16,777,216個。

B類地址(128.0.0.0-191.255.255.25 5)用于中型網絡,節點數可達65,536個。

C類地址(192.0.0.0-223.255.255.255)用于256個節點以下的小型網絡的單點網絡通信。

D類地址并不反映網絡的大小,只是用于組播,用來指定所分配的接收組播的節點組,這個節點組由組播訂閱成員組成。 D類地址的范圍為224.0.0.0-239.255.255.255。

E類(240.0.0.0-255.255.255.254)地址用于試驗。

網絡知識及寫腳本,一個又一個

作用

子網掩碼是一個32位地址,是與IP地址結合使用的一種技術。

它的主要作用有兩個, 一是用于屏蔽IP地址的一部分以區別網絡標識和主機標識,并說明該IP地址是在局域網上,還是在遠程網上。 二是用于將一個大的IP網絡劃分為若干小的子網絡。

使用子網是為了減少IP的浪費。因為隨著互聯網的發展,越來越多的網絡產生,有的網絡多則幾百臺, 有的只有區區幾臺,這樣就浪費了很多IP地址,所以要劃分子網。使用子網可以提高網絡應用的效率。

通過IP 地址的二進制與子網掩碼的二進制進行與運算,確定某個設備的網絡地址和主機號, 也就是說通過子網掩碼分辨一個網絡的網絡部分和主機部分。

子網掩碼一旦設置,網絡地址和主機地址就固定了。子網一個最顯著的特征就是具有子網掩碼。 與IP地址相同,子網掩碼的長度也是32位,也可以使用十進制的形式。 例如,為二進制形式的子網掩碼:1111 1111.1111 1111.1111 1111.0000 0000,采用十進制的形式為:255.255.255.0。

通過計算機的子網掩碼判斷兩臺計算機是否屬于同一網段的方法是,將計算機十進制的IP地址和子網掩碼轉換為二進制的形式, 然后進行二進制“與”(AND)計算(全1則得1,不全1則得0),如果得出的結果是相同的,那么這兩臺計算機就屬于同一網段。

子網掩碼表現形式

IP標識法 一個完整IP描述包含IP 地址和子網掩碼

具體標識有兩種

點分十進制 192.168.0.n 255.255.255.0(點分十進制)

這種暫時成為簡寫吧,懶人寫法 192.168.0.n/24 (/24表示子網掩碼二進制標識法中前面24位1)

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

OSI模型

網絡知識及寫腳本,一個又一個

常見對應各層的設備

物理層:網卡,網線,集線器,中繼器,調制解調器

數據鏈路層:網橋,交換機

網絡層:路由器

網關工作在第四層傳輸層及其以上

物理層

在OSI參考模型中,物理層(Physical Layer)是參考模型的最低層,也是OSI模型的第一層。 物理層的主要功能是:利用傳輸介質為數據鏈路層提供物理連接,實現比特流的透明傳輸。 物理層的作用是實現相鄰計算機節點之間比特流的透明傳送,盡可能屏蔽掉具體傳輸介質和物理設備的差異。使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什么。“透明傳送比特流”表示經實際電路傳送后的比特流沒有發生變化,對傳送的比特流來說,這個電路好像是看不見的。

數據鏈路層

數據鏈路層(Data Link Layer)是OSI模型的第二層,負責建立和管理節點間的鏈路。該層的主要功能是:通過各種控制協議,將有差錯的物理信道變為無差錯的、能可靠傳輸數據幀的數據鏈路。 在計算機網絡中由于各種干擾的存在,物理鏈路是不可靠的。因此,這一層的主要功能是在物理層提供的比特流的基礎上,通過差錯控制、流量控制方法,使有差錯的物理線路變為無差錯的數據鏈路,即提供可靠的通過物理介質傳輸數據的方法。 該層通常又被分為介質訪問控制(MAC)和邏輯鏈路控制(LLC)兩個子層。 MAC子層的主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制; LLC子層的主要任務是建立和維護網絡連接,執行差錯校驗、流量控制和鏈路控制。 數據鏈路層的具體工作是接收來自物理層的位流形式的數據,并封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為位流形式的數據轉發到物理層;并且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。

網絡層

網絡層(Network Layer)是OSI模型的第三層,它是OSI參考模型中最復雜的一層,也是通信子網的最高一層。它在下兩層的基礎上向資源子網提供服務。其主要任務是:通過路由選擇算法,為報文或分組通過通信子網選擇最適當的路徑。該層控制數據鏈路層與傳輸層之間的信息轉發,建立、維持和終止網絡的連接。具體地說,數據鏈路層的數據在這一層被轉換為數據包,然后通過路徑選擇、分段組合、順序、進/出路由等控制,將信息從一個網絡設備傳送到另一個網絡設備。 一般地,數據鏈路層是解決同一網絡內節點之間的通信,而網絡層主要解決不同子網間的通信。例如在廣域網之間通信時,必然會遇到路由(即兩節點間可能有多條路徑)選擇問題。 在實現網絡層功能時,需要解決的主要問題如下: 尋址:數據鏈路層中使用的物理地址(如MAC地址)僅解決網絡內部的尋址問題。在不同子網之間通信時,為了識別和找到網絡中的設備,每一子網中的設備都會被分配一個唯一的地址。由于各子網使用的物理技術可能不同,因此這個地址應當是邏輯地址(如IP地址)。 交換:規定不同的信息交換方式。常見的交換技術有:線路交換技術和存儲轉發技術,后者又包括報文交換技術和分組交換技術。 路由算法:當源節點和目的節點之間存在多條路徑時,本層可以根據路由算法,通過網絡為數據分組選擇最佳路徑,并將信息從最合適的路徑由發送端傳送到接收端。 連接服務:與數據鏈路層流量控制不同的是,前者控制的是網絡相鄰節點間的流量,后者控制的是從源節點到目的節點間的流量。其目的在于防止阻塞,并進行差錯檢測。

傳輸層

OSI下3層的主要任務是數據通信,上3層的任務是數據處理。而傳輸層(Transport Layer)是OSI模型的第4層。因此該層是通信子網和資源子網的接口和橋梁,起到承上啟下的作用。 該層的主要任務是:向用戶提供可靠的端到端的差錯和流量控制,保證報文的正確傳輸。傳輸層的作用是向高層屏蔽下層數據通信的細節,即向用戶透明地傳送報文。該層常見的協議:TCP/IP中的TCP協議、Novell網絡中的SPX協議和微軟的NetBIOS/NetBEUI協議。 傳輸層提供會話層和網絡層之間的傳輸服務,這種服務從會話層獲得數據,并在必要時,對數據進行分割。然后,傳輸層將數據傳遞到網絡層,并確保數據能正確無誤地傳送到網絡層。因此,傳輸層負責提供兩節點之間數據的可靠傳送,當兩節點的聯系確定之后,傳輸層則負責監督工作。綜上,傳輸層的主要功能如下: 傳輸連接管理:提供建立、維護和拆除傳輸連接的功能。傳輸層在網絡層的基礎上為高層提供“面向連接”和“面向無接連”的兩種服務。 處理傳輸差錯:提供可靠的“面向連接”和不太可靠的“面向無連接”的數據傳輸服務、差錯控制和流量控制。在提供“面向連接”服務時,通過這一層傳輸的數據將由目標設備確認,如果在指定的時間內未收到確認信息,數據將被重發。 監控服務質量。

會話層

會話層(Session Layer)是OSI模型的第5層,是用戶應用程序和網絡之間的接口,主要任務是:向兩個實體的表示層提供建立和使用連接的方法。將不同實體之間的表示層的連接稱為會話。因此會話層的任務就是組織和協調兩個會話進程之間的通信,并對數據交換進行管理。 用戶可以按照半雙工、單工和全雙工的方式建立會話。當建立會話時,用戶必須提供他們想要連接的遠程地址。而這些地址與MAC(介質訪問控制子層)地址或網絡層的邏輯地址不同,它們是為用戶專門設計的,更便于用戶記憶。域名(DN)就是一種網絡上使用的遠程地址例如:www.163.com就是一個域名。會話層的具體功能如下: 會話管理:允許用戶在兩個實體設備之間建立、維持和終止會話,并支持它們之間的數據交換。例如提供單方向會話或雙向同時會話,并管理會話中的發送順序,以及會話所占用時間的長短。 會話流量控制:提供會話流量控制和交叉會話功能。 尋址:使用遠程地址建立會話連接。l 出錯控制:從邏輯上講會話層主要負責數據交換的建立、保持和終止,但實際的工作卻是接收來自傳輸層的數據,并負責糾正錯誤。會話控制和遠程過程調用均屬于這一層的功能。但應注意,此層檢查的錯誤不是通信介質的錯誤,而是磁盤空間、打印機缺紙等類型的高級錯誤。

表示層

表示層(Presentation Layer)是OSI模型的第六層,它對來自應用層的命令和數據進行解釋,對各種語法賦予相應的含義,并按照一定的格式傳送給會話層。其主要功能是“處理用戶信息的表示問題,如編碼、數據格式轉換和加密解密”等。表示層的具體功能如下: 數據格式處理:協商和建立數據交換的格式,解決各應用程序之間在數據格式表示上的差異。 數據的編碼:處理字符集和數字的轉換。例如由于用戶程序中的數據類型(整型或實型、有符號或無符號等)、用戶標識等都可以有不同的表示方式,因此,在設備之間需要具有在不同字符集或格式之間轉換的功能。 壓縮和解壓縮:為了減少數據的傳輸量,這一層還負責數據的壓縮與恢復。 數據的加密和解密:可以提高網絡的安全性。

應用層

應用層(Application Layer)是OSI參考模型的最高層,它是計算機用戶,以及各種應用程序和網絡之間的接口,其功能是直接向用戶提供服務,完成用戶希望在網絡上完成的各種工作。它在其他6層工作的基礎上,負責完成網絡中應用程序與網絡操作系統之間的聯系,建立與結束使用者之間的聯系,并完成網絡用戶提出的各種網絡服務及應用所需的監督、管理和服務等各種協議。此外,該層還負責協調各個應用程序間的工作。 應用層為用戶提供的服務和協議有:文件服務、目錄服務、文件傳輸服務(FTP)、遠程登錄服務(Telnet)、電子郵件服務(E-mail)、打印服務、安全服務、網絡管理服務、數據庫服務等。上述的各種網絡服務由該層的不同應用協議和程序完成,不同的網絡操作系統之間在功能、界面、實現技術、對硬件的支持、安全可靠性以及具有的各種應用程序接口等各個方面的差異是很大的。應用層的主要功能如下: 用戶接口:應用層是用戶與網絡,以及應用程序與網絡間的直接接口,使得用戶能夠與網絡進行交互式聯系。 實現各種服務:該層具有的各種應用程序可以完成和實現用戶請求的各種服務。

OSI7層模型的小結

由于OSI是一個理想的模型,因此一般網絡系統只涉及其中的幾層,很少有系統能夠具有所有的7層,并完全遵循它的規定。 在7層模型中,每一層都提供一個特殊的網絡功能。從網絡功能的角度觀察:下面4層(物理層、數據鏈路層、網絡層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通信為主;第4層作為上下兩部分的橋梁,是整個網絡體系結構中最關鍵的部分;而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能為主。簡言之,下4層主要完成通信子網的功能,上3層主要完成資源子網的功能。

TCP/IP模型

網絡知識及寫腳本,一個又一個

TCP/IP模型包括4層:

  網絡接口層–對應OSI參考模型的物理層和數據鏈路層;

  網絡層–對應OSI參考模型的網絡層;

  運輸層–對應OSI參考模型的運輸層;

  應用層–對應OSI參考模型的5、6、7層。

TCP/IP協議的主要特點如下:

高可靠性

TCP/IP采用重新確認的方法保證數據的可靠傳輸,并采用“窗口”流量控制機制使可靠性得到進一步保證。

安全性

為建立TCP連接,在連接的每一端都必須與該連接的安全性控制達成一致。IP在它的控制分組頭中有若干字段允許有選擇地對傳輸的信息實施保護。

靈活性

TCP/IP要求下層支持該協議,而對上層應用協議不作特殊要求。因此,TCP/IP的使用不受傳輸介質和網絡應用軟件的限制。

總結

從網絡通信的觀點來看,Internet是一個由TCP/IP把各個國家、機構、部門的內部網絡連接起來的龐大的數據通信網; 從信息資源的角度來看,Internet是一個集各個領域、部門內各種信息資源,以共享為目的的信息資源網;從技術的角度來看,Internet是一個“不同網絡互連的網絡(網際網)”,是由許多網絡(包括局域網、城域網和廣域網)互連形成的。

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

我就不瞎BB了,直接上操作步驟,分centos和ubuntu兩種操作系統,這是一道送分題。

總體來說有以下幾步:

1、配置IP地址和掩碼

2、配置網關

3、配置dns的IP地址

CentOS6

vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet        #90%以上都是以太網啦
BOOTPROTO=none       #如果是自動獲取,此處是DHCP,手動指定就是none
IPADDR=192.168.0.243 #修改此處
PREFIX=24            #修改此處
GATEWAY=192.168.0.1  #修改此處
DNS1=202.103.44.150  #修改此處
DNS2=202.103.24.68   #修改此處
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth0
UUID=b33d04cb-b415-4874-b5a2-e201bb20b46e   #網卡的唯一標識
ONBOOT=yes          #是否開機啟動

最后:wq  保存退出,  再執行 service network restart  #使其生效

Ubuntu 14.04

[email protected]:~# vim /etc/network/interfaces   #配置IP、掩碼、網關

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.245
netmask 255.255.255.0
gateway 192.168.0.1


[email protected]:~# vim /etc/resolvconf/resolv.conf.d/base   #配置DNS

nameserver 202.103.24.68
nameserver 202.103.44.150

最后:wq  保存退出

[email protected]:~# service networking restart   #使其生效

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

方法一:使用ifconfig或者ip 臨時添加網絡信息,并使用route命令添加默認網關

**注意:所有操作均使用root用戶**
修改IP:
ifconfig eth0 192.168.0.66
則直接將第一張網卡的IP修改成192.168.0.66

增加IP:
ifconfig eth0 add 192.168.2.77 #增加一個IP
ifconfig eth0:0 broadcast 192.168.2.255 ##修改剛剛增加IP的廣播地址

再增加一個IP:
ifconfig eth0:0 add 10.10.44.145
ifconfig eth0:0:1 broadcast 10.10.44.255 #修改剛剛增加IP的廣播地址


上述增加完,立刻生效,但是機器重新啟動后,就無效了。


route add -net 192.168.0.0/24 gw 192.168.0.1 dev eth1 #增加網關

[[email protected] ~]# vim /etc/resolv.conf  #增加dns
[[email protected] ~]# cat /etc/resolv.conf 
#Generated by NetworkManager
nameserver 202.103.44.150
nameserver 202.103.24.68

不過這種方法是臨時的,服務器一重啟就失效了

方法二:使用修改/etc/sysconfig/network-scripts/ifcfg-IF_NAME文件

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
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 地址;     

[[email protected] ~]# cat /etc/resolv.conf #示例
# Generated by NetworkManager
nameserver 202.103.44.150
nameserver 202.103.24.68
[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.0.243
PREFIX=24
GATEWAY=192.168.0.1
DNS1=202.103.44.150
DNS2=202.103.24.68
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=eth0
UUID=b33d04cb-b415-4874-b5a2-e201bb20b46e
ONBOOT=yes

一般最常用的就是這兩種了。

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

這道題一開始我很茫然,無從下手,看了同學們的作業參考,都是用for循環,記得馬哥說for循環大了會占用內存空間,例如ping B類局域網地址的話,就想著不用for,用while或者until實現可否,折騰了一天多的時間(處女座作的),精益求精,經過N次死循環及失敗,于是有了下面的腳本:

[[email protected] Jerry_go]# wc -l ping4.sh 
14 ping4.sh
[[email protected] Jerry_go]# cat ping4.sh 
#!/bin/sh
#ping IP
#Author Jerry

ip=0
while [ $ip -lt 254 ];do
    ip=$[$ip+1] 
    ping -c 2 192.168.0.$ip >> /dev/null
    if [ $? == 0 ];then
        echo -e "\e[1;32m 192.168.0.$ip ok \e[0m" && continue 
    else
        echo -e "\e[1;31m 192.168.0.$ip no response \e[0m" && continue 
    fi
done
[[email protected] Jerry_go]#

執行效果:

網絡知識及寫腳本,一個又一個

用for實現

[[email protected] Jerry_go]# cat ping.sh 
#!/bin/bash
#ping ip
#Author Jerry

for ((i=1;i<255;i++));do
    ping -w 1 -c 1 172.16.250.$i &>/dev/null
    if [ $? -eq 0 ];then
    echo -e "\e[1;32m 172.16.250.$i ok \e[0m"
    else
        echo -e "\e[1;31m 172.16.250.$i no response \e[0m"
    fi
done
[[email protected] Jerry_go]#

經測試效果一樣

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

這個也分快捷跟永久兩種方式。主要用到ifconfig

快捷方式呢,即生效,如下:

[[email protected] ~]# ifconfig eth0:0 192.168.3.243 netmask 255.255.255.0 up 
[[email protected] ~]# ifconfig eth0:1 192.168.3.2 netmask 255.255.255.0 up 
[[email protected] ~]# ip addr show  #查看網卡IP地址方法一
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:04:bd:c1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.243/24 brd 192.168.0.255 scope global eth0
    inet 192.168.3.243/24 brd 192.168.3.255 scope global eth0:0
    inet 192.168.3.2/24 brd 192.168.3.255 scope global secondary eth0:1
[[email protected] ~]# ifconfig #查看網卡IP地址方法二
eth0      Link encap:Ethernet  HWaddr 00:0C:29:04:BD:C1  
          inet addr:192.168.0.243  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8122248 errors:0 dropped:0 overruns:0 frame:0
          TX packets:51751 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:526472342 (502.0 MiB)  TX bytes:3884350 (3.7 MiB)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:04:BD:C1  
          inet addr:192.168.3.243  Bcast:192.168.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:04:BD:C1  
          inet addr:192.168.3.2  Bcast:192.168.3.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
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:290 errors:0 dropped:0 overruns:0 frame:0
          TX packets:290 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:26660 (26.0 KiB)  TX bytes:26660 (26.0 KiB)

[[email protected] ~]#

永久方式呢,稍微麻煩點,不過永久嘛,一勞永逸,值得

是仿照/etc/sysconfig/network-scripts/ifcfg-eth0增加一文件根據網絡虛擬接口的名字進行命名 例如ifcfg-eth0:0或者ifcfg-eth0:1等等

開始飆車了啊,系好安全帶!

網絡知識及寫腳本,一個又一個

[[email protected] ~]# cd /etc/sysconfig/network-scripts/

[[email protected] network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0

網絡知識及寫腳本,一個又一個

[[email protected] network-scripts]# vim ifcfg-eth0:0

網絡知識及寫腳本,一個又一個

保存退出,重啟系統,再看。應該是沒問題的啦。

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

ifconfig命令:接口及地址查看和管理

可以使用ifconfig命令配置網卡屬性,設置后立即生效,重啟后失效。

顯示活動接口信息 ifconfig eth0

顯示所有接口信息 ifconfig -a

啟用或禁用給定接口 ifconfig eth0 up/down

設置IP地址及掩碼 ifconfig eth0 172.168.1.100/24

route命令:路由查看及管理

添加主機路由 route add -host 192.168.1.3 gw 172.16.0.1 dev eth0

添加網絡路由 route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

添加默認路由 route add default gw 172.16.0.1

刪除主機路由 route del -host 192.168.1.3

刪除網絡路由 route del -net 192.168.0.0 netmask 255.255.255.0

netstat命令:打印網絡連接,路由表,接口統計信息

以數字形式顯示TCP協議相關所有狀態 netstat -tan

以數字形式顯示UDP協議相關所有狀態 netstat -uan

以數字形式顯示TCP協議相關的監聽狀態 netstat -tnl

以數字形式顯示UDP協議相關的監聽狀態 netstat -unl

顯示內核路由表 netstat -r

顯示所有接口統計數據 netstat -i

顯示指定接口信息 netstat -I eth0

dig命令:解析DNS地址工具

正解DNS 域名至IP地址 dig -t A www.magedu.com

反解DNS IP地址至域名 dig -x 127.0.0.1

ip命令:顯示/操縱路由,設備,策略路由和隧道

禁用接口 ip link set dev eth0 down

啟用接口 ip link set dev eth0 up

顯示接口信息 ip link show dev eth0

顯示主地址 ip addr show dev eth0 primary

顯示次地址 ip addr show dev eth0 secondary

添加IP地址 ip addr add 172.16.100.13/16 dev eth0

添加網卡別名 ip addr add 172.16.100.13/16 dev eth0 label 'eth:0'

刪除別名 ip addr flush dev eth0 label 'eth0:0'

添加主路由 ip route add 192.168.1.3 via 172.16.0.1 dev eth0

添加網絡路由 ip route add 192.168.0.0/16 via 172.16.0.1 dev eth0

添加默認路由 ip route add default via 127.16.0.1

刪除路由 ip route del 192.168.1.3

查看路由 ip route show

清空路由 ip route flush dev eth0

ss命令:顯示網絡連接工具

參數用法同netstat

指定顯示某種狀態ss -t state established '( dport = :ssh or sport = :ssh )'

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

Linux的軟件系統包管理那就好玩了,根據這多年的使用經驗,主要分為yum和apt兩大系列,

Debian 及其衍生產品如:Ubuntu、Linux Mint 和 Raspbian 的包格式為.deb文件,APT 是最常見包操作命令,可:搜索庫、安裝包及其依賴和管理升級,而要直接安裝現成.deb包時需要使用dpkg命令。

APT還自吹有超級牛力,有圖有真相:

網絡知識及寫腳本,一個又一個

CentOS、Fedora 及 Red Hat 系列 Linux 使用RPM包文件,并使用yum命令管理包文件及與軟件庫交互。在最新的 Fedora 版本中,yum命令已被dnf取代進行包管理,而要直接安裝現成.rpm包時需要使用rpm命令。

好嘛,都是利器啊。下邊且看我分解。

網絡知識及寫腳本,一個又一個

RPM 包的安裝 / 升級 / 查詢 / 卸載

一個 RPM 包包含了已壓縮的軟件文件集以及該軟件的內容信息(在頭文件中保存),通常表現為以 .rpm 擴展名結尾的文件,例如 package.rpm 。對其操作,需要使用 rpm 命令。下面介紹 rpm 工具的參數和使用方法。

RPM 命令常用參數

RPM 的常規使用方法為 rpm -參數 package.rpm ( 更多信息,請查閱幫助 $man rpm):

-q 在系統中查詢軟件或查詢指定 rpm 包的內容信息

-i 在系統中安裝軟件

-U 在系統中升級軟件

-e 在系統中卸載軟件

-h 用 #(hash) 符顯示 rpm 安裝過程

-v 詳述安裝過程

-p 表明對 RPM 包進行查詢,通常和其它參數同時使用,如: -qlp 查詢某個 RPM 包中的所有文件列表 -qip 查詢某個 RPM 包的內容信息

RPM 命令參數使用方法

以上參數有些需要組合使用,比如說 rpm -h package.rpm 是沒有意義的,但 rpm -ih package.rpm 即表示安裝 package 并用 # 符顯示安裝進度。

安裝 RPM 包

rpm -ivh package.rpm

升級 RPM 包命令

rpm -Uvh package.rpm

卸載 RPM 包命令

rpm -ev package

查詢 RPM 包中包含的文件列表命令

rpm -qlp package

查詢 RPM 包中包含的文件列表命令

rpm -qlp package

查詢 RPM 包中包含的內容信息命令

rpm -qip package

查詢系統中所有已安裝 RPM 包

rpm -qa

DEB 包的安裝 / 升級 / 查詢 / 卸載

一個 DEB 包包含了已壓縮的軟件文件集以及該軟件的內容信息(在頭文件中保存),通常表現為以 .deb 擴展名結尾的文件,例如 package.deb 。對其操作,需要使用 dpkg 命令。下面介紹 dpkg 工具的參數和使用方法,并以 IBM Lotus Notes 在 UBUNTU 904 安裝為例做具體說明。

DPKG 命令常用參數

DPKG 的常規使用方法為 dpkg -參數 Package(.rpm),( 更多信息,請查閱幫助 $man rpm)

-l 在系統中查詢軟件內容信息

–info 在系統中查詢軟件或查詢指定 rpm 包的內容信息

-i 在系統中安裝 / 升級軟件

-r 在系統中卸載軟件 , 不刪除配置文件

-P 在系統中卸載軟件以及其配置文件

DPKG 命令參數使用方法

安裝 DEB 包命令

dpkg -i package.deb

升級 DEB 包命令

dpkg -i package.deb ( 和安裝命令相同)

卸載 DEB 包命令

dpkg -r package.deb # 不卸載配置文件或

dpkg -P package.deb # 卸載配置文件

查詢 DEB 包中包含的文件列表命令

dpkg-deb -c package.deb

查詢 DEB 包中包含的內容信息命令

dpkg –info package.deb

查詢系統中所有已安裝 DEB 包

dpkg -l package

YUM/APT

大多數 Linux 都使用本地數據庫來存儲遠程可用的包倉庫列表,所以在安裝或升級包之前最好更新一下這個數據庫。

Debian/Ubuntu

sudo apt-get update

CentOS

yum check-update

Fedora

dnf check-update

升級已安裝的包

Debian/Ubuntu

sudo apt-get upgrade #僅升級已安裝的軟件包

sudo apt-get dist-upgrade #可添加或刪除程序包,以滿足新的依賴。

CentOS

sudo yum update

Fedora

sudo dnf upgrade

查找/搜索軟件包

Debian/Ubuntu apt-cache search #搜索內容

CentOS yum search #搜索內容 yum search all #搜索內容 搜索所有內容,包括包描述。

Fedora dnf search #搜索內容 dnf search all #搜索內容 搜索所有內容,包括包描述。

查看某個軟件包信息

Debian/Ubuntu

apt-cache show 包名 #顯示有關軟件包的本地緩存信息

dpkg -s 包名 #顯示包的當前安裝狀態

CentOS

yum info 包名

yum deplist 包名 #列出包的以來

Fedora dnf info 包名 dnf repoquery –requires 包名 #列出包的以來

從軟件倉庫安裝包

一旦我們知道某個軟件包的名稱之后,便可以使用如下命令從軟件倉庫安裝包。

Debian/Ubuntu

sudo apt-get install 包名 sudo apt-get install 包1 包2 … #安裝所有列出的包 sudo apt-get install -y 包名 #無需提示直接安裝

CentOS sudo yum install 包名 sudo yum install 包1 包2 … #安裝所有列出的包 sudo yum install -y 包名 #無需提示直接安裝

Fedora sudo dnf install 包名 sudo dnf install 包1 包2 … #安裝所有列出的包 sudo dnf install -y 包名 #無需提示直接安裝

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

1、將主機base源及media源備份并將media源切換至iso mount目錄

[[email protected] /]# cd /etc/yum.repos.d
[[email protected] yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[[email protected] yum.repos.d]# cp CentOS-Media.repo CentOS-Media.repo.bak
[[email protected] yum.repos.d]# vim CentOS-Media.repo

網絡知識及寫腳本,一個又一個

[[email protected] yum.repos.d]#

2、將iso光盤插入光驅或將iso包掛載到機器中(本次測試直接將iso掛載到虛擬機centos中)

[[email protected] /]# mkdir /media/CentOS #建立光盤掛載目錄 ,其實就是跟CentOS-Media.repo里面默認的一樣啦

[[email protected] dev]# mount /dev/sr0 /media/CentOS/ #掛載光盤

3、測試安裝policycoreutils-python

先清空yum的緩存,再重建yum緩存,看看從光盤的yum repository能否正常讀取。

網絡知識及寫腳本,一個又一個

貌似是OK的。

再來一發

網絡知識及寫腳本,一個又一個大功告成!

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

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

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

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

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

#!/bin/bash
#

#定義統計文件個數的變量,初始化啦
filename_S_sum=0
filename_K_sum=0

#利用for循環列表支持文件路徑*通配S開頭的文件
for filename_S in /etc/rc.d/rc3.d/S*;do
        echo $(basename $filename_S) start
        let filename_S_sum++
done

#利用for循環列表支持文件路徑*通配S開頭的文件
for filename_K in /etc/rc.d/rc3.d/K*;do
        echo $(basename $filename_K) stop
        let filename_K_sum++
done


echo "There is $filename_S_sum files by S At the beginning of the file name"
echo "There is $filename_K_sum files by K At the beginning of the file name"


[[email protected] Jerry_go]# bash week8_title12-2.sh > week8_title12-2.txt && cat week8_title12-2.txt 
S01sysstat start
S02lvm2-monitor start
S10network start
S11portreserve start
S12rsyslog start
S22messagebus start
S23NetworkManager start
S25blk-availability start
S26haldaemon start
S26udev-post start
S55memcached start
S55sshd start
S58ntpd start
S90crond start
S95atd start
S99local start
K01smartd stop
K05wdaemon stop
K10psacct stop
K10saslauthd stop
K16abrt-ccpp stop
K16abrtd stop
K30spice-vdagentd stop
K50kdump stop
K61nfs-rdma stop
K75netfs stop
K75ntpdate stop
K75quota_nld stop
K84wpa_supplicant stop
K87restorecond stop
K88auditd stop
K89netconsole stop
K89rdisc stop
K92ip6tables stop
K92iptables stop
K95firstboot stop
K95rdma stop
K99rngd stop
There is 16 files by S At the beginning of the file name
There is 22 files by K At the beginning of the file name

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

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

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

[[email protected] Jerry_go]# cat week8_title13.sh  #開始裝逼
#!/bin/bash
#

[ $# -lt 1 ] && echo “At least input one users name ” && exit 1  #提前判斷一下,最少輸入一個腳本參數并提示用戶


userid_sum=0   #初始化userid_sum變量

for user in $*;do  #開始用for循環,$*參數表示讀取腳本后的任意個參數作為循環列表
    if id $user &> /dev/null;then  #判斷一下用戶是否存在
        echo "$user userid is $(id -u $user)"  #顯示每次循環的當前系統用戶的ID
        let userid_sum+=$(id -u $user)  #變量自增
    else
        echo "$user is not an existing user"  #如果用戶不存在,輸出提示給用戶
    fi
done

echo "They're userid sum is $userid_sum"  #輸出用戶ID的總和



[[email protected] Jerry_go]# bash week8_title13.sh root bin jerry sshd FBI
root userid is 0
bin userid is 1
jerry userid is 500
sshd userid is 74
FBI is not an existing user
They're userid sum is 575
[[email protected] Jerry_go]#

14、寫一個腳本

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

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

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

[[email protected] Jerry_go]# cat week8_title14.sh 
#!/bin/bash
#Author Jerry
#

#Not less than one script parameters
[ $# -lt 1 ] && echo "please aleast input one directory" && exit 1

#Judge whether the script parameters of the input from the user directory
[ -d $* ] || echo "Please enter the directory!!!" 


dsum=0
fsum=0

for file_name in $1;do
    ls -l $* |awk '{print $NF}'
    let dsum+=$(ls -l $* |grep ^d |wc -l)        
    let fsum+=$(ls -l $* |grep -v ^d |wc -l)  
    shift 
    break  

done

echo "the directories sum:$dsum"
echo "the file sum:$fsum"

15、寫一個腳本

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

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

[[email protected] jerry_go]# cat week8_title14.sh 
#!/bin/bash

#Determine the user's input
grep "^$1\>" /etc/passwd &> /dev/null || echo "Please enter a user name" 

userid=$(id -u $1)

[ $userid -ge 500 ] && echo "This is a  common user,it's userid is $userid " || echo "This is a  system user,it's userid is $userid "

16、寫一個腳本

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

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

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

#!/bin/bash
declare -i num
for((i=1;i<11;i++)){
    if ! id user$i &> /dev/null;then
        useradd user$i
        echo user$i:user$i | chpasswd
        let num++
    fi
}
echo "Add $num users!"

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

#!/bin/bash
net="172.16.250."
for((i=20;i<=100;i++)){
    ping -c 1 $net$i &> /dev/null
    if [ $? -eq 0 ];then
    echo $net$i
    fi
}

18、打印九九乘法表;

[[email protected] jerry_go]# bash week8_title18.sh 
1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

[[email protected] jerry_go]# cat week8_title18.sh 
#!/bin/bash
for ((i=1;i<=9;i++)){
    for((j=1;j<=i;j++));do
        echo -e -n "$j*$i=$(($i*$j))\t"
    done
    echo 
}

原創文章,作者:N24_Jerry,如若轉載,請注明出處:http://www.npownk.tw/68110

評論列表(1條)

  • luoweiro
    luoweiro 2017-02-23 07:34

    非常不錯,而且還附帶很搞笑的內容,加油。

聯系我們

400-080-6560

在線咨詢

工作時間:周一至周五,9:30-18:30,節假日同時也值班

QR code
安徽十一选五分布走势