一、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。前端
集線器:集線器工做在OSI模型中的物理層,基於廣播方式工做,用於放大和廣播數據比特,如今只在特定網絡中應用,好比須要對網絡抓包的時;
node
網橋和二層交換機:二層交換機屬於網橋,網橋和二層交換機工做在OSI模型中的數據鏈路層,基於MAC端口錶鏈接鏈接多臺主機或二層網絡,可以對數據幀進行存儲轉發和校驗,並可以隔離衝突域。
緩存
三層交換機:工做在OSI模型中第三層網絡層,是具備部分路由功能的交換機,應用在大型網絡中實現數據包的快速交換和轉發;bash
路由器:三層交換機工做在OSI模型中的網絡層,用於連接多個網絡(能夠是不一樣接口,如串口、光纖、電話線、雙絞線等),在互聯網中基於路由協議實現數據包的路由功能。網絡
二、IP地址的分類有哪些?子網掩碼的表示形式及其做用ssh
IPv4共分爲如下五類:socket
第一段範圍(二進制和十進制) | 有效IP範圍 | 默認子網掩碼 | 網絡數 | 每網絡主機數 | 私網地址 | |
A類 | 0 000 0000 – 0 111 1111 0 – 127 |
1.0.0.1 – 126.255.255.254 0.0.0.0表明任意網絡 127.X.X.X爲本地迴環地址 |
255.0.0.0 | 126 | 2^24-2 | 10.0.0.0/8 |
B類 | 10 00 0000 – 10 11 1111 127 – 191 |
128.0.0.1 – 191.255.255.254 | 255.255.0.0 | 2^14 | 2^16-2 | 172.16.0.0/16 – 172.31.0.0/16 |
C類 | 110 0 0000 – 110 1 1111 192 - 223 |
192.0.0.1 – 223.255.255.254 | 255.255.255.0 | 2^21 | 2^8-2 | 192.168.0.0/24 – 192.168.255.0/24 |
D類 | 1110 0000 – 1110 1111 224 – 239 |
224.0.0.1 – 239.255.255.254 | D類地址不分網絡和主機,用做組播 | |||
E類 | 1111 0000 – 1111 1111 240 – 255 |
240.0.0.1 – 255.255.255.254 | 用於科學研究 |
子網掩碼:子網掩碼用來區分IPv4地址的網絡和主機段,並進而判斷多個IP是否處與同一網絡。判斷方法:子網掩碼與IP按位進行「與」運算後,若是網絡段相同則說明處於同一網絡中。
tcp
子網掩碼與IP相似,也是由32位二進制組成,其表現形式有兩種,一種是和IP相似以點分十進制的方法表示,如:255.255.0.0;另外一種爲在IP地址後緊跟「/NUM」,NUM爲掩碼的十進制表示法,如:172.16.0.1/16。 ide
三、計算機網絡的分紅模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。工具
OSI參考模型:
應用層(第7層,Application layer):爲計算機與用戶交互的接口,好比Telnet、SMTP、FTP、HTTP等協議;
表示層(第6層,Presentation layer):爲應用層提供數據,並負責數據的轉換和格式化等。好比數據是否須要加密,數據的編碼格式(ASCII、JPEG)等;
會話層(第5層,Session layer):負責保證應用程序間數據的獨立性。
傳輸層(第4層,Transport layer):未來自會話層的數據分段,並重組爲數據流。主要提供了兩個通訊協議TCP(可靠)和UDP(不可靠)。PDU爲Segment;
網絡層(第3層,Network layer):爲數據包提供路由選擇服務,主要協議有IP、ICMP。PDU爲Packet。涉及的物理設備主要是路由器;
數據鏈路層(第2層,Data Link layer):負責未來自網絡層的數據包轉換爲比特流,以便於物理層進行傳輸,也提供了錯誤發現的服務,但不糾正。使用MAC地址進行通訊。PDU爲Frame,涉及的設備有交換機;
物理層(第1層,Physical layer):發送和接收比特流。PDU爲bit。涉及的設備有集線器、線纜。
TCP/IP模型:由如下5層組成,其中應用層稱爲資源子網,傳輸層、互聯網層、數據鏈路層和物理層稱爲通訊子網,與OSI模型對應。
應用層(第5層,Application layer):對應OSI模型中的應用層、表示層和會話層;
傳輸層(第4層,Transport layer)
互聯網層(第3層,Internet layer)
數據鏈路層(第2層,Data Link layer)
物理層(第1層,Physical layer)
四、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
將Linux主機接入到TCP/IP網絡中須要爲主機配置IP地址、網關和DNS等項目。
1). 修改/添加IP地址:
管理網絡接口的命令有兩個分別爲ifconfig和ip,推薦使用ip命令進行配置。注意,使用命令配置的網卡參數當即臨時生效:
ipconfig命令,當即臨時生效:
ifconfig [interface]//顯示指定網絡接口的信息,不加[interface]則顯示全部活動狀態的網絡接口信息
# ifconfig -a//顯示全部網絡接口的信息,包括非活動狀態的接口信息
# ifconfig IFACE [up|down]//
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/mask [up]
# ifconfig IFACE IP netmask MASK [up]
# ifconfig IFACE IP[/PREFIXLEN] [up]
使用ifconfig爲網卡配置並查看IP地址的方法:
或
ip命令,當即臨時生效:
ip address - protocol address management
ip addr { add | del } IFADDR dev STRING [label LABEL]
IFADDR=IP/PREFIXLEN
[label LABEL]:添加地址時指明網卡別名
[scope {global|link|host}]:指明做用域
global: 全局可用;
link: 僅連接可用;
host: 本機可用;
[broadcast ADDRESS]:指明廣播地址
ip address show - look at protocol addresses
[dev DEVICE]//檢查指定設備上的IP地址
[label PATTERN]//檢查指定標籤設備的IP地址
[primary and secondary]//檢查指定設備上的主或輔助IP地址
使用ip命令不能直接替換網卡的IP地址,能夠先刪除設備上的IP再添加IP,以下:
2). 修改網關或路由:
添加/修改網關或路由可以使用route或ip route命令:
使用route命令添加網關/路由:
查看:route -n
Flags:Possible flags include
U (route is up)
H (target is a host)
G (use gateway)
R (reinstate route for dynamic routing)
D (dynamically installed by daemon or redirect)
M (modified from routing daemon or redirect)
A (installed by addrconf)
C (cache entry)
! (reject route)
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
刪除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
添加網關爲192.168.1.254:
使用ip命令添加網關/路由:
查看路由條目:ip route { list | show }
添加路由: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 del default
添加網關爲192.168.1.254:
3). 添加/修改DNS:
DNS的添加/修改需經過配置文件/etc/resolv.conf,Linux最多能夠添加3個DNS。
/etc/resolv.conf格式:
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
添加DNS爲:192.168.0.三、202.106.0.20、8.8.8.8
配置網卡信息永久生效:
修改網卡的配置文件:
# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 HWADDR="08:00:27:b4:9f:bf" TYPE="Ethernet" BOOTPROTO="static" NAME="enp0s3" UUID="1ad1abf6-983f-4727-bc53-ca64a35327f6" ONBOOT="yes" IPADDR="192.168.1.92" NETMASK="255.255.255.0" GATEWAY="192.168.1.254" DNS1="192.168.0.3" DNS2="202.106.0.20" DNS3="8.8.8.8" NM_CONTROLLED="no"
驗證結果:
五、爲Linux主機配置網絡信息的方式有哪些,請描述各個過程。
爲Linux主機配置網絡信息的方式有兩種,一種爲靜態指定(當即臨時生效)另外一種爲使用DHCP協議自動獲取網絡信息,詳細方法以下:
靜態指定:
使用命令進行配置,當即臨時生效:
添加、修改IP和子網掩碼:
ifconfig:
[root@C3 network-scripts]# ifconfig enp0s3:1 192.168.1.208/24 up #爲虛擬網卡enp0s3:1指定IP爲:192.168.1.208,子網掩碼爲:255.255.255.0,並激活該網卡 [root@C3 network-scripts]# ifconfig enp0s3:1 #查看虛擬網卡信息 enp0s3:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.208 netmask 255.255.255.0 broadcast 192.168.1.255 ether 08:00:27:b4:9f:bf txqueuelen 1000 (Ethernet)
ip:
[root@C3 network-scripts]# ip addr add 192.168.1.208/24 dev enp0s3 label 'enp0s3:1' #建立一塊虛擬網卡命名爲enp0s3:1,指定IP爲:192.168.1.208,子網掩碼爲:255.255.255.0 [root@C3 network-scripts]# ip addr show dev enp0s3 #查看虛擬網卡信息 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:b4:9f:bf brd ff:ff:ff:ff:ff:ff inet 192.168.1.61/24 brd 192.168.1.255 scope global dynamic enp0s3 valid_lft 42122sec preferred_lft 42122sec inet 192.168.1.209/24 scope global secondary enp0s3:0 valid_lft forever preferred_lft forever inet 192.168.1.208/24 scope global secondary enp0s3:1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:feb4:9fbf/64 scope link valid_lft forever preferred_lft forever
添加修改路由:
route:
[root@C3 network-scripts]# route del default [root@C3 network-scripts]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.3 192.168.1.254 255.255.255.255 UGH 100 0 0 enp0s3 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@C3 network-scripts]# route add default gw 192.168.1.254 #添加默認網關爲192.168.1.254 [root@C3 network-scripts]# route -n #查看路由信息 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 enp0s3 192.168.0.3 192.168.1.254 255.255.255.255 UGH 100 0 0 enp0s3 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
ip:
[root@C3 network-scripts]# ip route show 192.168.0.3 via 192.168.1.254 dev enp0s3 proto dhcp metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.61 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 [root@C3 network-scripts]# ip route add default via 192.168.1.254 dev enp0s3 #添加默認網關爲192.168.1.254 [root@C3 network-scripts]# ip route show #查看路由信息 default via 192.168.1.254 dev enp0s3 192.168.0.3 via 192.168.1.254 dev enp0s3 proto dhcp metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.61 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 [root@C3 network-scripts]# route -n #查看路由信息 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 enp0s3 192.168.0.3 192.168.1.254 255.255.255.255 UGH 100 0 0 enp0s3 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
修改配置文件:
# cat ifcfg-enp0s3 HWADDR=08:00:27:B4:9F:BF NAME=enp0s3 UUID=480ace9a-9c89-470f-8b5f-b124bb13607d ONBOOT=yes TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.1.91 NETMASK=255.255.255.0 GATEWAY=192.168.1.254 DNS1=192.168.0.3 DNS2=202.106.0.20
動態分配:
修改配置文件(/etc/sysconfig/network-scripts/ifcfg-NIC_NAME)使用DHCP協議自動獲取IP、網關和DNS等信息:
# cat ifcfg-enp0s3 HWADDR=08:00:27:B4:9F:BF TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=enp0s3 UUID=480ace9a-9c89-470f-8b5f-b124bb13607d ONBOOT=yes
六、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的全部主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash # declare -i i=1 net='192.168.1' while [ $i -le 254 ]; do if $(ping -n -c 1 -w 1 $net.$i &> /dev/null ); then echo -e "\033[32m $net.$i is online. \033[0m" else echo -e "\033[31m $net.$i is offline. \033[0m" fi let i++ done
結果:
七、詳細描述每一個網絡接口的配置文件中各個參數的含義和其所對應的值;
網卡配置文件 :/etc/sysconfig/network-scripts/ifcfg-IFACE
HWADDR=08:00:27:B4:9F:BF #網卡的MAC地址; TYPE=Ethernet #網卡類型,常見的有Ethernet、Bridge; BOOTPROTO=static #網卡在激活時IP地址的獲取協議,有dhcp、static、none和bootp; PEERDNS=no #當BOOTPROTO爲dhcp時,是否容許DHCP所分配的DNS覆蓋/etc/resolv.conf; NAME=enp0s3 #網卡名稱 UUID=480ace9a-9c89-470f-8b5f-b124bb13607d #網卡的惟一標示 ONBOOT=yes #OS在引導時是否激活此設備; IPADDR=192.168.1.71 #網卡的主IP地址; PREFIX=24 #子網掩碼長度,也可寫爲NETMASK=255.255.255.0 GATEWAY=192.168.1.1 #默認網關; DNS1=202.106.0.20 #第一個DNS,若與/etc/resolv.conf衝突,則以此處爲主; DNS2=8.8.8.8 #備用DNS NM_CONTROLLED #NM爲NetworkManager的簡寫,指定網卡是否接受NetworkManager的控制; USERCTL=no #是否容許精通用戶控制此網卡
八、如何給網絡接口配置多個地址,有哪些方式?
使用ifconfig命令(當即臨時生效):
[root@C1 ~]# ifconfig enp0s3:0 192.168.1.81/24 up #新虛擬網卡名稱爲enp0s3:0,IP爲192.168.1.81/24 [root@C1 ~]# [root@C1 ~]# ifconfig enp0s3:0 #查看新虛擬網IP enp0s3:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.81 netmask 255.255.255.0 broadcast 192.168.1.255 ether 08:00:27:a5:19:25 txqueuelen 1000 (Ethernet)
使用ip命令(當即臨時生效):
[root@C1 ~]# ip addr add 192.168.1.82/24 dev enp0s3 label 'enp0s3:1' #新網卡名爲enp0s3:1,IP爲192.168.1.82/24 [root@C1 ~]# [root@C1 ~]# ip addr show dev enp0s3 #檢查新虛擬網卡信息 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:a5:19:25 brd ff:ff:ff:ff:ff:ff inet 192.168.1.71/24 brd 192.168.1.255 scope global enp0s3 valid_lft forever preferred_lft forever inet 192.168.1.81/24 brd 192.168.1.255 scope global secondary enp0s3:0 valid_lft forever preferred_lft forever inet 192.168.1.82/24 scope global secondary enp0s3:1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fea5:1925/64 scope link valid_lft forever preferred_lft forever
使用nmcli命令(當即永久生效):
[root@C1 ~]# nmcli conn modify enp0s3 +ipv4.addresses 192.168.1.83/24 #爲enp0s3網卡添加一個IP地址,該IP爲192.168.1.83/24 [root@C1 ~]# nmcli conn down enp0s3; nmcli conn up enp0s3 #重啓網卡使配置生效; Connection 'enp0s3' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) [root@C1 ~]# nmcli dev show enp0s3 #檢查結果 GENERAL.DEVICE: enp0s3 GENERAL.TYPE: ethernet GENERAL.HWADDR: 08:00:27:A5:19:25 GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: enp0s3 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 192.168.1.71/24 IP4.ADDRESS[2]: 192.168.1.83/24 #此處爲新添加的IP IP4.GATEWAY: 192.168.1.1 IP4.DNS[1]: 202.106.0.20 IP4.DNS[2]: 8.8.8.8 IP6.ADDRESS[1]: fe80::a00:27ff:fea5:1925/64 IP6.GATEWAY: # cat ifcfg-enp0s3 #查看網卡的配置文件 HWADDR=08:00:27:A5:19:25 TYPE="Ethernet" NAME="enp0s3" UUID="1ad1abf6-983f-4727-bc53-ca64a35327f6" ONBOOT="yes" BOOTPROTO="none" DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no DNS1=202.106.0.20 DNS2=8.8.8.8 IPADDR=192.168.1.71 PREFIX=24 IPADDR1=192.168.1.83 #新IP已寫入配置文件中 PREFIX1=24 GATEWAY=192.168.1.1
修改網卡配置文件(永久有效):
[root@C1 network-scripts]# cat ifcfg-enp0s3 HWADDR=08:00:27:A5:19:25 TYPE="Ethernet" NAME="enp0s3" UUID="1ad1abf6-983f-4727-bc53-ca64a35327f6" ONBOOT="yes" BOOTPROTO="none" DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no DNS1=202.106.0.20 DNS2=8.8.8.8 IPADDR0=192.168.1.71 IPADDR1=192.168.1.81 #在同一文件中指定多個IP時須要使用IPADDR#來取分,#爲IP標號 PREFIX0=24 PREFIX1=24 #同IPADDR,並與同標號的IP綁定掩碼; GATEWAY=192.168.1.1 [root@C1 network-scripts]# service network restart #重啓網絡服務 Restarting network (via systemctl): [ 肯定 ] [root@C1 network-scripts]# ip addr show dev enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:a5:19:25 brd ff:ff:ff:ff:ff:ff inet 192.168.1.71/24 brd 192.168.1.255 scope global enp0s3 valid_lft forever preferred_lft forever inet 192.168.1.81/24 brd 192.168.1.255 scope global secondary enp0s3 #新IP已生效 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fea5:1925/64 scope link valid_lft forever preferred_lft forever
九、經常使用的網絡管理類工具備哪些,並用示例形式描述他們的使用方法。
配置類:
ifconfig、ip、route、nmcli參見第4題和第8題
監控類:
netstat:顯示網絡會話、路由表和網絡統計等信息。
顯示網絡鏈接:
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, -tunlpe
顯示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 顯示內核路由表
-n: 數字格式
顯示接口統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
-i:顯示全部網卡的統計信息;
-I=IFACE:顯示指定網卡的系統信息;
ss命令:
格式:ss [OPTION]... [FILTER]
選項:
-t: tcp協議相關
-u: udp協議相關
-w: 裸套接字相關
-x:unix sock相關
-l: listen狀態的鏈接
-a: 全部
-n: 數字格式
-p: 相關的程序及PID
-e: 擴展的信息
-m:內存用量
-o:計時器信息
EXPRESSION:
['( dport = :TCPPORT [or sport = :ssh] )']
十、Linux系統軟件包管理方法(安裝、升級、卸載等操做)有哪些,以及如何管理的。
CentOS/Redhat系Linux操做系統可用的軟件包管理工具備rpm和yum兩種,其中yum是rpm的一個前端工具,是基於rpm的,不可獨立存在。
rpm工具:
rpm的通用選項:
--quiet: 靜默模式;
-v: verbose;
-vv: 更爲詳細的verbose;
-h: 以#顯示程序包管理執行進度;每一個#表示2%的進度
安裝軟件:
rpm {-i|--install} [install-options] 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: 強行升級;
卸載軟件:
rpm {-e|--erase} [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
-e|--erase:卸載軟件包
--nodeps:卸載時忽略依賴關係;
--test:測試卸載,並不真正卸載;
--noscripts:卸載時不執行程序包腳本片段;
yum工具:
yum命令的用法:
yum [options] [command] [package ...]
Options:
-v, --verbose:verbose operation
-y, --assumeyes:交互時所有回答'yes'
--enablerepo=[repo]:臨時啓用一個或多個倉庫,支持統配符;
--disablerepo=[repo]:臨時禁用一個或多個倉庫,支持統配符;
安裝軟件:
install package1 [package2] [...]
reinstall package1 [package2] [...] (從新安裝)
升級軟件:
update [package1] [package2] [...]
downgrade package1 [package2] [...] (降級)
卸載軟件:
remove | erase package1 [package2] [...]
十一、如何使用發行版光盤做爲yum repository,請描述該過程。
1).掛載光盤,並使光盤開機自動掛載;
# grep iso9660 /etc/fstab /dev/sr1 /media/CentOS7 iso9660 defaults,ro,loop 0 0
2).建立光盤倉庫配置文件;
# cat /etc/yum.repos.d/CentOS-Media.repo [CentOS7-Media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS7 enabled=1 gpgcheck=1 gpgkey=file:///media/CentOS7/RPM-GPG-KEY-CentOS-7
刷新緩存,檢查是否可用:
十二、寫一個腳本,完成如下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示全部以K開頭的文件的文件名,而且給其附加一個stop字符串;
(3) 顯示全部以S開頭的文件的文件名,而且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash # declare -i sumS=0 declare -i sumK=0 for file in $(ls /etc/rc.d/rc3.d/ | grep '^[K|S].*'); do if echo $file | grep '^S' &> /dev/null; then echo "$file start" let sumK++ else echo "$file stop" let sumS++ fi done echo -e "K files: $sumK\nS file: $sumS"
結果:
1三、寫一個腳本,完成如下功能
(1) 腳本能接受用戶名做爲參數;
(2) 計算此些用戶的ID之和;
#!/bin/bash # declare -i countUID=0 if [ $# -eq 0 ]; then echo "Usage: $0 <USERNAME1> <USERNAME2>..." exit 1 fi for user in $@; do if id $user &> /dev/null ; then echo "$user UID: $(id -u $user)" let countUID+=$(id -u $user) else echo "$user not existed." fi done echo "Sum UID: $countUID"
結果:
1四、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每一個目錄的全部一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#/bin/bash # declare -i dirCount=0 declare -i blkCount=0 declare -i chaCount=0 declare -i regCount=0 declare -i symCount=0 declare -i pipCount=0 declare -i socCount=0 declare -i othCount=0 for dir in $@; do if [ -d $dir ]; then cd $dir for file in $(ls .); do echo "$(file $file)" if [ -d $file ]; then let dirCount++ elif [ -f $file ]; then let regCount++ elif [ -b $file ]; then let blkCount++ elif [ -c $file ]; then let chaCount++ elif [ -L $file ]; then let symCount++ elif [ -p $file ]; then let pipCount++ elif [ -S $file ]; then let socCount++ else let othCount++ fi done else echo "$dir is not directory or not exist." fi done echo "=================================" echo "Directory: $dirCount" echo "Block files: $blkCount" echo "Character files: $chaCount" echo "Regular files: $regCount" echo "Symbolic link files: $symCount" echo "Pipe files: $pipCount" echo "Socket files: $socCount" echo "Other files: $othCount"
結果:
1五、寫一個腳本
經過命令行傳遞一個參數給腳本,參數爲用戶名
若是用戶的id號大於等於500,則顯示此用戶爲普通用戶;
#!/bin/bash # if id $1 &> /dev/null; then userID=$(id -u $1) echo "$1 UID: $userID" if [ $userID -gt 500 ]; then echo "$1 is regular user." else echo "$1 is system user." fi else echo "user $! not exist." fi
結果:
1六、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最後顯示本次共添加了多少用戶;
#!/bin/bash # declare -i addedUser=0 for ((i=1;i<=10;i++)); do if id user$i &> /dev/null; then echo "user$i already existed." else if useradd user$i &> /dev/null; then echo "user$i" | passwd --stdin user$i &> /dev/null let addedUser++ echo "user$i add OK." else echo "user$i add failed." fi fi done echo -e "=========================\nTotal added user: $addedUser."
結果:
1七、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100之內有哪些主機在線,將在線的顯示出來;
#!/bin/bash # net="192.168.1" echo "Online IPs:" for ((i=20;i<=100;i++));do ping -n -w 1 -c 1 $net.$i &> /dev/null && echo "$net.$i" done
結果:
1八、打印九九乘法表;
#!/bin/bash # printMulTab() { for ((i=1;i<=$1;i++));do for ((j=1;j<=$i;j++));do echo -e -n "${j}X${i}=$[$i*$j]\t" done echo done } printMulTab 9
結果: