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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

14、寫一個腳本

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

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

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

15、寫一個腳本

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

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

16、寫一個腳本

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

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

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

17.  打印九九乘法表;

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

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

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

(1)A類:(0) 0 000 0000 - 0 111 1111: 1-127
由1字節的網絡地址和3字節主機地址組成,網絡地址的最高位必須是“0”, 范圍:從1.0.0.0 到126.0.0.0??捎玫腂類網絡數:126,每個網絡中的主機數:2^24-2(全1為廣播地址,全0為網絡地址)默認子網掩碼:255.0.0.0;私網地址:10.0.0.0/8
(2)B類:(10) 10 00 0000 - 10 11 1111:128-191
由2個字節的網絡地址和2個字節的主機地址組成,網絡地址的最高位必須是“10”,范圍:從128.0.0.0到191.255.255.255。可用的B類網絡數:2^14,每個網絡中的主機數:2^16-2;默認子網掩碼:255.255.0.0;私網地址:172.16.0.0/16-172.31.0.0/16
(3)C類:(110)110 0 0000 - 110 1 1111: 192-223
由3字節的網地址和1字節的主機地址組成,網絡地址的最高位必須是“110”。范圍從192.0.0.0到223.255.255.255??捎玫腃類網絡數:2^21,每個網絡中的主機數:2^8-2;默認子網掩碼:255.255.255.0;私網地址:192.168.0.0/24-192.168.255.0/24
(4)D類:(1110) 1110 0000 - 1110 1111: 224-239  組播地址,用于多點廣播(Multicast)。
第一個字節以“1110”開始,它是一個專門保留的地址。它并不指向特定的網絡,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協議的一組計算機。
(5) E類:(11110) 保留地址,240~255
以“11110”開始,為將來使用保留。
全零(“0.0.0.0”)地址對應于當前主機。全“1”的IP地址(“255.255.255.255”)是當前子網的廣播地址。
子網掩碼:
A類地址子網掩碼為255.0.0.0,B類為255.255.0.0,C類為255.255.255.0
將某個IP地址劃分成網絡地址和主機地址兩部分,與IP地址相與可計算出的相應IP的網絡位。

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

ip_image001.jpeg

(1)OSI模型:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層
①物理層(Physical layer):利用物理傳輸介質為數據鏈路層提供物理連接,
如:集線器、網線、光纖、同軸電纜等; 在這一層,數據的單位稱為比特(bit)。
物理層定義的典型規范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等
②數據鏈路層(Data link layer):將數據分幀,并處理流控制,屏蔽物理層,
為網絡層提供一個數據鏈路的連接,進行幾乎無差錯的數據傳輸,如:網卡、網橋、二層交換機;
該層的作用包括:物理地址尋址、數據的成幀、流量控制、數據的檢錯、重發等。
在這一層,數據的單位稱為幀(frame)。數據鏈路層協議的代表包括:SDLC、HDLC、PPP、STP、
幀中繼等。
③網絡層(Network layer):負責路由轉發和控制網絡擁塞,如:路由器、三層交換機等; 
在這一層,數據的單位稱為數據包(packet)。網絡層協議的代表包括:IP、IPX、RIP、OSPF等。
④傳輸層(Transport layer):負責將上層數據分段并提供端到端的、可靠(TCP)
或不可靠(UDP)的數據傳輸;在這一層,數據的單位稱為數據段(segment)。
傳輸層協議的代表包括:TCP、UDP、SPX等。
⑤會話層(Session layer):負責兩個節點之間的連接和斷開;管理主機之間的會話進程,
即負責建立、管理、終止進程之間的會話。會話層還利用在數據中插入校驗點來實現數據的同步。
⑥表示層(Presentation layer):負責加密和解密;表示層的數據轉換包括數據的加密、
壓縮、格式轉換等。
⑦應用層(Application layer):用于進程間通信,常用的協議有HTTP、FTP、SMTP、TELNET等       
(2)TCP/IP模型:網絡接入層 、網際互聯層、傳輸層、應用層
① 網絡接入層:與OSI參考模型中的物理層和數據鏈路層相對應,負責監視數據在主機和網絡之
間的交換;
②網際互連層:相當于OSI的網絡層,主要處理主機到主機間的通信;該層定義了分組格式和協議,
即IP協議(Internet Protocol)。除了需要完成路由的功能外,也可以完成將不同類型的網絡
(異構網)互連的任務,也需要完成擁塞控制的功能。
③傳輸層:對應于OSI參考模型的傳輸層,為應用層實體提供端到端的通信功能,保證了數據包的
順序傳送及數據的完整性,該層定義了兩種服務質量不同的協議:傳輸控制協議TCP(transmission
 control protocol)和用戶數據報協議UDP(user datagram protocol)。
④應用層:對應于OSI參考模型的會話層、表示層和應用層,面向不同的網絡應用引入了不同的
應用層協議,如:文件傳輸協議(File Transfer Protocol,FTP)、虛擬終端協議(TELNET)、
超文本鏈接協議(Hyper Text Transfer Protocol,HTTP)等。

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

# vim /etc/sysconfig/network-scripts/ifcfg-eth0:
在文件里面添加修改以下內容:
方法一:(動態分配DHCP)
DEVICE=eth0
HWADDR=00:0C:29:61:27:D6
TYPE=Ethernet
UUID=bbc0c0d2-271c-45ea-b14e-293fe9bcd9c4
NM_CONTROLLED=yes
ONBOOT=yes  //開機自啟動 
BOOTPROTO=dhcp # 動態獲取IP
方法二:(配置靜態IP)
ONBOOT=yes                //開機自啟動        
BOOTPROTO=static         //靜態配置
IPADDR=192.168.192.132     //IP地址
NETMASK=255.255.255.0    //子網掩碼
GATEWAY=192.168.192.1       //網關
DNS1=8.8.8.8                //主DNS服務器(谷歌域名)
DNS2=114.114.114.114      //次DNS服務器(國內域名)

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

(1)編輯配置文件:# vim /etc/sysconfig/network-scripts/ifcfg-IFACE
(修改信息如上題所示)
圖形界面配置:
(2)進入tui(text user interface):# system-config-network-tui
或者:#setup選擇網絡配置
重啟網絡服務方能生效:#service network restart
(3)直接使用命令配置:
(但這樣設置是臨時性的,一旦重啟網卡或者重啟服務器還是會被還原。)
① 使用ipconfig命令:
# ifconfig eth0 192.168.192.132 netmask 255.255.255.0(此法立即生效)
# route add –host 192.168.193.132 gw 192.168.192.1 dev eth0 (修改網關地址)
②使用ip命令
# ip addr add 192.168.192.132/24 dev eth0
# ip link set dev eth0 up(啟用eth0接口)

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

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

#!/bin/bash
for i in {1..254};do # ping -w 1 表示1s后結束
    if ping –w 1 172.16.250.$i &> /dev/null;then
        echo -e "\033[32m 172.16.250.$i is OK. \033[0m"
    else
        echo -e "\033[31m 172.16.250.$i can’t connecte. \033[0m"
    fi
done

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

IP、MASK、GW、DNS相關配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相關的配置文件:/etc/sysconfig/network-scripts/route-IFACE
 
(1)# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0               # 接口名
HWADDR=00:0C:29:61:27:D6 # 對應的設備的MAC地址;
BOOTPROTO=static # 激活此設備時使用的地址配置協議,
常用的dhcp, static, none, bootp;
NM_CONTROLLED=no # NM是NetworkManager的簡寫;
此網卡是否接受NM控制;CentOS6建議為“no”;
ONBOOT=yes # 在系統引導時是激活此設備;
TYPE=Ethernet # 接口類型;常見有的Ethernet, Bridge;
UUID bbc0c0d2-271c-45ea-b14e-293fe9bcd9c4 # 設備的惟一標識;
IPADDR=192.168.193.132 # IP地址;
NETMASK=255.255.255.0  # 子網掩碼;
GATEWAY=192.168.193.1 # 默認網關;
DNS1=8.8.8.8                //主DNS服務器(谷歌域名)
DNS2=114.114.114.114      //次DNS服務器(國內域名)
USERCTL=no # 普通用戶是否可控制此設備;
PEERDNS=no # 如果BOOTPROTO的值為“dhcp”,是否允許dhcp server分配的dns服務器指向信息直接覆蓋至/etc/resolv.conf文件中;
 
(2)# vim /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.  如何給網絡接口配置多個地址,有哪些方式?

具體方法可參考第5題,將其接口名換成接口別名,即可給網絡接口配置多個地址
ifconfig:
# ifconfig IFACE_ALIAS IP netmask MASK
ip
# ip addr add IPADDR dev IFACE_ALIAS
配置文件
# vim /etc/sysconfig/network-scripts/ifcfg-IFACE_ALIAS
注意:網關別名不能使用dhcp協議引導,IFACE_ALIAS是接口別名,如eth0:0。

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

1、ifconfig:配置或查看系統IP情況
[root@localhost ~]# ifconfig  # 顯示所有處于活動狀態接口的信息
[root@localhost ~]# ifconfig –a # 顯示所有接口信息
[root@localhost ~]# ifconfig eth0 # 只顯示eth0接口信息
[root@localhost ~]# ifconfig eth0 192.168.192.132/24 # 配置eth0接口的IP和子網掩碼
[root@localhost ~]# ifconfig eth0 192.168.192.132 netmask 255.255.255.0 # 配置IP和子網掩碼
2、ip:配置網絡屬性
ip - show / manipulate routing(顯示/配置路由), devices(路由), policy routing and tunnels(測試路由和設備)
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link - network device configuration(網絡設備配置)
ip link set dev IFACE up and down:激活或禁用指定接口;
ip link show [dev IFACE] [up]:僅顯示處于激活狀態的接口
ip address - protocol address management(協議地址管理工具)
ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global|link|host}] [broadcast ADDRESS]
[label LABEL]:添加地址時指明網卡別名
[scope {global|link|host}]:指明作用域(global: 全局可用;link: 僅鏈接可用;host: 本機可用;)
[broadcast ADDRESS]:指明廣播地址
ip address show - look at protocol addresses(查看地址協議)
ip addr show [dev DEVICE] [label PATTERN] [primary and secondary]
ip address flush - flush protocol addresses(清除地址(使用格式同show))
ip route - routing table management(管理路由表)
添加路由: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 del TARGET
顯示路由:ip route show
清空路由表:ip route flush [dev IFACE] [via PREFIX]
例:
1)ip link (network device configuration)網絡設備配置
[root@localhost ~]# ip link show up # 顯示處于啟動狀態的接口
[root@localhost ~]# ip link show dev eth0 # 查看指定接口eth0
[root@localhost ~]# ip link show # 顯示接口信息
2)ip addr (protocol address management)協議地址管理工具
[root@localhost ~]# ip addr add 192.168.192.132/24 dev eth0 # 添加eth0地址
[root@localhost ~]# ip addr replace 192.168.192.136/24 dev eth0 # 添加eth0地址
注意:添加新地址時,應先刪除原有地址
[root@localhost ~]# ip addr del 192.168.192.132/24 dev eth0 #刪除eth0地址
[root@localhost ~]# ip addr del 192.168.192.132/24 dev eth0 label 'eth0:0'
#添加地址時指明網卡別名為eth0:0
ip addr show (look at protocol addresses) # 查看地址協議
[root@localhost ~]# ip addr show dev eth0 # 查看eth0的地址協議
ip addr  flush(flush protocol addresses) 清除地址(使用格式同show)
[root@localhost ~]# ip addr flush dev echo label 'eth0:0’ # 清除地址
3)ip route(routing table management) 管理路由表
添加路由: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 del TARGET
顯示路由:ip route show
清空路由表:ip route flush [dev IFACE] [via PREFIX]
[root@localhost ~]# ip route add 192.168.1.3 via 192.168.192.1 dev eth0 # 添加主機路由
#若添加為主機路由IP,則不能加掩碼,若為網絡路由IP,則需加掩碼
[root@localhost ~]# ip route add 192.168.192.132/24 via 192.168.192.1 dev eth0 # 添加網絡路由
[root@localhost ~]# ip route add default via 192.168.192.1 dev eth0 # 添加網關
[root@localhost ~]# ip route del 192.168.1.3 # 刪除路由
[root@localhost ~]# ip route show # 顯示路由
[root@localhost ~]# ip route flush dev eth0 # 清空路由表
3、 route:路由管理命令
1)查看路由表信息:
# route -n
2)添加路由表
route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]
-net:網絡路由 -host:主機路由 netmask:子網掩碼 gw:網關 dev:接口
(a)目標:192.168.1.3  網關:172.16.0.1
# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
(b)目標: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
(c)默認路由,網關: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
3)刪除路由表
#route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
(a)目標:192.168.1.3  網關:172.16.0.1
# route del -host 192.168.1.3
(b)目標:192.168.0.0 網關:172.16.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0
4、 netstat:查看當前系統的網絡狀態
Print network connections(網絡連接), routing tables(路由表), interface statistics(網絡接口統計數據), masquerade connections(偽裝連接), and multicast memberships(組播成員)
1)顯示網絡連接:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]]  [--program|-p]
-t: tcp協議相關; -u: udp協議相;關 -w: raw socket相關; -l: 處于監聽狀態;-a: 所有狀態; -n: 以數字顯示IP和端口; -e:擴展格式;-p: 顯示相關進程及PID
常用組合: -tan, -uan, -tnl, -unl
[root@localhost ~]# netstat –tan # 所有TCP相關的進度
[root@localhost ~]# netstat –tan # 所有UDP相關的進度
[root@localhost ~]# netstat –tnl # TCP處于監聽狀態的連接
[root@localhost ~]# netstat –unl # UDP處于監聽狀態的連接
2)顯示路由表:
netstat  {--route|-r} [--numeric|-n]
-r: 顯示內核路由表;-n: 數字格式
[root@localhost ~]# netstat –rnv # 以數字格式詳細顯示內核路由表
3) 顯示接口統計數據:
netstat  {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
[root@localhost ~]# netstat –i # 所有接口信息
# netstat -IIFACE 
[root@localhost ~]# netstat –Ieth0 # 顯示指定接口eth0信息
5、ss:網絡狀態查看工具(可取代netstat,但比netstat快)
格式:ss [OPTION]... [FILTER]
1) OPTION:-t: tcp協議相關;-u: udp協議相關;-w: 裸套接字相關;-x:unix sock相關;-l: listen狀態的連接;-a: 所有;-n: 數字格式;-p: 相關的程序及PID;
-e: 擴展的信息;-m:內存用量;-o:計時器信息
2) FILTER := [ state TCP-STATE ] [ EXPRESSION ]
(a)state TCP-STATE (即TCP的常見狀態):
tcp finite state machine(tcp的有限狀態機):
LISTEN: 監聽;ESTABLISHED:已建立的連接;FIN_WAIT_1;FIN_WAIT_2
SYN_SENT(SYN已發送);SYN_RECV(SYN已接收);CLOSED(已關閉);
(b)EXPRESSION(表達式):
源端口dport =  目標端口sport =
例:`(dport = :ssh or sport = :ssh )`
常用組合:-tan, -tanl, -tanlp, -uan
[root@localhost ~]# ss –tan # 所有TCP相關的進度
[root@localhost ~]# ss –tanl # 顯示TCP的listen監聽狀態的連接
[root@localhost ~]# ss –tanlp # TCP listen監聽狀態連接的相關的程序及PID
[root@localhost ~]# ss –uan #所有UDP相關的進度
6、CentOS 7上的nmcli命令
NetworkManager 可以用于以下類型的連接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移動3G)以及 IP-over-InfiniBand。針對與這些網絡類型,NetworkManager 可以配置他們的網絡別名,IP 地址,靜態路由,DNS,VPN連接以及很多其它的特殊參數。
nmcli:網絡管理命令行接口:NetworkManager Command-Line Interface
nmcli  [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage(管理) network interfaces(網絡接口)
connection - start, stop, and manage network connections(管理網絡連接)
如何修改IP地址等屬性:
#nmcli connection modify IFACE [+|-]setting.property value(+為增加,-為刪除)
setting.property:ipv4.addresses;ipv4.gateway;ipv4.dns1;ipv4.method;manual。
[root@localhost ~]# nmcli general status
[root@localhost ~]# nmcli device status  # 查看接口狀態
[root@localhost ~]# nmcli device show eno16777736  #查看eno16777736接口信息
[root@localhost ~]# nmcli connection show  # 顯示當前可用狀態連接
[root@localhost ~]# nmcli con modify eno16777736 +ipv4.addresses 192.168.192.132/24 # 修改IP
[root@localhost ~]# nmcli con down eno16777736 # 禁用
[root@localhost ~]# nmcli con up eno16777736   # 啟用
[root@localhost ~]# ip addr show #可以查看到修改的IP已生效
[root@localhost ~]# nmcli con modify eno16777736 -ipv4.addresses 192.168.192.132/24  # 刪除IP
[root@localhost ~]# nmcli con modify eno16777736 +ipv4.addresses 192.168.192.1
# 增加網關
[root@localhost ~]# nmcli con modify eno16777736 +ipv4.dns 114.114.114.114
#增加DNS
[root@localhost ~]# nmcli con down eno16777736;nmcli con up eno16777736 
 # 禁用并啟用
[root@localhost ~]# nmcli dev show eno16777736 #可查看到修改已生效
7、CentOS 7上的nmtui命令
Nmtui:NetworkManager Text-User Interface網絡接口配置tui工具
8、CentOS 7的hostnamctl命令(主機名稱配置工具)
[root@localhost ~]# hostnamectl  # 查看主機名
[root@localhost ~]# hostnamectl set-hostname CentOS7
# 修改主機名為CentOS7
[root@localhost ~]# hostname # 查看主機名
9、網絡客戶端工具
1)  lftp(交互式文件傳輸工具,連入服務器后,可下載文件至本地)
# lftp [-p port] [-u user[,password]] SERVER
[root@localhost ~]# lftp 192.16.0.1
lftp >help # 幫助
lftp >cd /Sourses
lftp >ls # 列出該目錄下所有文件
lftp >get 123.txt #下載一個文件至本地
lftp >mget * # 下載多個文件至本地
2)  ftp(較少使用)
3)  lftpget (get a file with ftp)
# lftpget URL (需要下載文件的URL)
4)  wget(通過互聯網下載文件,常用,非交互式網絡下載器)
wget [option]... [URL]...
    -q: 靜默模式(不選會下載進度)
    -c: 斷點續傳
    -O: 保存位置
    --limit-rates=: 指定傳輸速率
# wget –r –tries=10 http://... –o log
# 下載失敗,重復嘗試10次,結果記錄至日志中

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

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,請描述該過程。

(1)掛載光盤至某目錄
[root@localhost ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2)修改yum源的配置文件/etc/yum.repo.d
[root@localhost ~]# cd /media/cdrom
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim local.repo # 建本地倉庫
[base]
name=CentOS 7 Release 7.1.1503
baseurl=file://media/cdrom
enabled=1 # 啟用此倉庫
gpacheck=0 # 不檢查
[root@localhost yum.repos.d]# yum clean all # 清除緩存
[root@localhost yum.repos.d]# yum repolist # 顯示倉庫列表
[root@localhost yum.repos.d]# yum list all #查看所有
[root@localhost yum.repos.d]# yum grouplist # 包組顯示
[root@localhost yum.repos.d]# yum groupinstall # 安裝包組

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

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

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

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

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

#!/bin/bash
for file in $(ls /etc/rc.d/rc3.d | grep "^K");do
    echo "$file stop"
done
for file in $(ls /etc/rc.d/rc3.d | grep "^S");do
    echo "$file start"
done

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

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

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

for user in $@;do
    uid=`grep "^$user" /etc/passwd | cut -d: -f3`
    let uidsum+=$uid
done
echo "users id total:$uidsum"

14.  寫一個腳本

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

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

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

#!/bin/bash
for dirname in $@;do
    for filename in `ls $dirname`;do
       if [ -z "$filename" ];then
           echo "Usage:Enter a file path."
           exit 2
       fi
       if [ ! -e $filename ];then
           echo "no such file."
           exit 3
       fi
       if [ -f $filename ];then
           echo "$filename is common file."
       elif [ -d $filename ];then
           echo "$filename is directory"
       elif [ -L $filename ];then
           echo "$filename is symbolic file."
       else
           echo "$filename is Other type."
       fi
       let filetotal++
    done
    let dirtotal++
done
echo "the directory total: $dirtotal"
echo "the file total: $filetotal"

15.  寫一個腳本

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

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

#!/bin/bash
if id $1&>/dev/null;then
    uid=`grep "^$1" /etc/passwd | cut -d: -f3`
    if [ $uid -ge 500 ];then
        echo "$1 is common user"
    else
        echo "$1 isn't  common user"
    fi
fi

16.  寫一個腳本

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

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

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

#!/bin/bash
declare -i total=0
for i in {1..10};do
    if id user$i &> /dev/null;then
        echo "user$i exits."
    else
        useradd user$i
        if [ $? -eq 0 ];then
            echo "user$i" | passwd --stdin user$i &> /dev/null
            echo "Add user$i finished."
            let total++
        fi
    fi
done
echo "now add users total:$total"

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

#!/bin/bash
for i in {20..100};do
    if ping -w 1 172.16.250.$i &> /dev/null;then
        echo "172.16.250.$i is online."
    fi
done

18.  打印九九乘法表;

#!/bin/sh
for((i=1;i<10;i++));do
    for((j=1;j<=i;j++));do
        echo -n "$j*$i=$(($i*$j))   "
        if [ $j -eq $i ];then
            echo -e '\n'
        fi
   done
done

原創文章,作者:二極管,如若轉載,請注明出處:http://www.www58058.com/26814

(0)
二極管二極管
上一篇 2016-08-02
下一篇 2016-08-02

相關推薦

  • Shell腳本編程中的if、case、for、while、until命令

    為何要學編程中的if、case、for、while、until命令?        作為一個運維工程師,總會聽到自動化,實際自動化離不開編寫shell腳本,而shell腳本中卻又離不開編程中的if、case、for、while、until, 這些關鍵字。 了解編程中的if、case、for、while、until命令,…

    Linux干貨 2016-08-19
  • 基于rsync+inotify實現數據實時同步傳輸

    前言 與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份等優點,通過rsync可以解決對實時性要求不高的數據備份需求,但隨著文件數量的增大和實時同步的要求,rsync已不能滿足需求,隨之rsync+inotify便應運而生。本文將講解rsync的基礎知識和如何基于rsync+inotify實現數據實時同步傳輸。 rsync相關介…

    Linux干貨 2015-04-27
  • 馬哥教育網絡班21期+第二周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 復制命令:cp     # 復制a.txt到var目錄下     cp /tmp/a.txt /var     # 復制mytest1目錄到v…

    2016-07-17
  • 馬哥linux0728課程內容

    課堂學習內容   -ahistory list –.bash_histroy 保存歷史列表到歷史文件 -cclear history list 清空歷史列表 -d deletehistory entru 清除歷史列表某一條命令 -rread .bash_history 讀歷史文件中的命令到歷史列表…

    Linux干貨 2016-08-04
  • 基本網絡設置

    我們在上網的時候會遇到各種各樣的問題,比如有時候網絡不通,沒有ip地址,或者ip地址有沖突等等,這就需要我們懂得一些網絡的配置,方便以后使用?;揪W絡配置:主機名,ip地址,網關,DNS服務器。1、 主機名的配置第一種方法:在配置文件修改Centos7版本:vim /etc/hostname 改過配置文件后需要使其生效,命令為hostname centos7…

    2017-09-09

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-02 11:50

    寫的很好,排版還可以在漂亮一點,加油

欧美性久久久久