1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋: 連接不同子網,使其透明通信,它們工作在鏈路層。它們處理的是鏈路層數據,一般來說就是以太 網幀格式的 數據,缺點是無法避免“廣播風暴”,交換機就是網橋的集合。 根據MAC地址來轉發幀,本地通信只限本網段內,相當于中繼器,線路比較長保證信號不變形的傳輸 工作在物理層,相當于一個物理接口 集線器: 集線器的基本功能是信息分發,它把一個端口接收的所有信號向所有端口分發出去。一些集線器 在分發之前將弱信號重新生成,一些集線器整理信號的時序以提供所有端口間的同步數據通信, 工作在物理層,集線器只是把各個終端互相連接起來而已,處理的是信號。 接收到的數據包進行廣播轉發,所有端口都能收到此數據,通過MAC確認是不是發給自己的包進行回應 廣播形式轉發數據都每個端口,工作在數據鏈路層,共享帶寬 二層交換機: 傳統交換機從網橋發展而來,屬于OSI第二層即數據鏈路層設備。它根據MAC地址尋址,通 過站表選擇路由,站表的建立和維護由交換機自動進行。 物理編址、網絡拓撲結構、錯誤校驗、幀序列以及流控 不是廣播形式轉發數據,對于一個目的 MAC進行轉發,工作在數據鏈路層,與集線器不同,不是廣播形式,而是選擇,同時獨享帶寬 三層交換機: 三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部 的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發 通過IP轉發數據包,不具有選路功能,基于IP的轉發,工作在網絡層,相當于路由器 路由器 路由器工作于OSI參考模型的第3層(網絡層),是連接因特網中各局域網、廣域網的設備,它 根據信道的情況自動選擇和設定路由,以最佳路徑,按前后順發送信號 為經過路由器的每個數據包尋找一條最佳傳輸路徑 選路,轉發,NAT等 工作在網絡層,路由 選路轉發數據
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
iP地址就是給每一個連接在Internet上的主機分配一個唯一的32bit 地址(標識符),IP地址的結構 使我們可以Internet上很方便地進行尋址,IP地址有兩部分組成,一部分為網絡地址,另一部分為主機 地址.IP地址分為A,B,C,D,E5類.常用的是B和C兩類. A類: 0 000 0000- 0 111 111:1-127 網絡數:127-1=126 每個網絡中的主機數:2^24-2 默認子網掩碼:255.0.0.0 私有地址 10.0.0.0/8 B類 10 00 0000-10 11 1111: 128-191 網絡數:2^14 網絡主機數:2^16-2 默認子網掩碼:255.255.0.0 私網地址:172.16.0.0/16 - 172.31.0.0/16 C類 110 0 0000- 110 1 1111: 192-223 網絡數:2^21 網絡主機數:2^8-2 默認子網掩碼:255.255.255.0 私網地址192.168.0.0/24-192.168.255.0/24 D類:組播 1110 0000 - 1110 1111: 224-239 //以1110開頭 E類:保留,240-255
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
OSI模型: (1)物理層 物理層所處理的數據單位是比特(bit),物理層向上為數據鏈路層提供物理鏈路,實現透明的比 特流(bit stream)傳輸服務,物理層向下與物理媒體相連,要確定連接物理媒體的網絡接口的 機械、電氣、功能和過程方面的特性。 物理設備:網卡、網線;老式集線器; (2)數據鏈路層 數據鏈路層負責在單個鏈路上的結點間傳送以幀(frame)為PDU的數據,在不太可靠的物理鏈路上 實現可靠的數據傳輸。數據鏈路層的主要功能包括:建立、維持和釋放數據鏈路的連接,鏈路的 訪問控制,流量控制和差錯控制。 物理設備:MAC地址,二層交換機;PPP協議; (3)網絡層 網絡層傳送的PDU稱為分組或包(packet),在物理網絡間傳送分組,負責將源端主機的報文通過 中間轉發結點傳送到目的端。網絡層是通信子網的最高層,為主機提供虛電路和數據報兩種方 式的服務。網絡層主要負責分組轉發和路由選擇,根據路由表把分組逐跳地由源站傳送到目的 站,并能適應網絡的負載及拓撲結構的變化,動態地更新路由表。 物理設備:IP地址,網關,網關代理;三層交換機;路由設備; (4)傳輸層 傳輸層傳輸的PDU稱為報文(message),傳輸層為源結點和目的結點的用戶進程之間提供端到端的 可靠的傳輸服務。端到端的傳輸指的是源結點和目的結點的兩個傳輸層實體之間,不涉及路由器 等中間結點。為了保證可靠的傳輸服務,傳輸層具備以下一些功能:面向連接、流量控制與擁塞 控制、差錯控制相網絡服務質量的選擇等。 協議:TCP,UDP協議,IP代理; (5)會話層 會話層在傳輸層服務的基礎上增加控制會話的機制,建立、組織和協調應用進程之間的交互過 程。會話層提供的會話服務種類包括雙工、半雙工和單工方式。會話管理的一種方式是令牌管理 ,只有令牌持有者才能執行某種操作。會話層提供會話的同步控制,當出現故障時,會話活動在 故障點之前的同步點進行重復,而不必從頭開始。 協議: HTTP協議,web,mail (6)表示層 表示層定義用戶或應用程序之間交換數據的格式,提供數據表示之間的轉換服務,保證傳輸的信 息到達目的端后意義不變。 (7)應用層 應用層直接面向用戶應用,為用戶提供對各種網絡資源的方便的訪問服務。 TCP/IP模型: TCP/IP是一組用于實現網絡互連的通信協議。Internet網絡體系結構以TCP/IP為核心。基于TCP/IP 的參考模型將協議分成四個層次,它們分別是:網絡訪問層、網際互聯層、傳輸層(主機到主機)、和 應用層。 1、主機到網絡層 實際上TCP/IP參考模型沒有真正描述這一層的實現,只是要求能夠提供給其上層-網絡互連層一 個訪問接口,以便在其上傳遞IP分組。由于這一層次未被定義,所以其具體的實現方法將隨著網 絡類型的不同而不同。 物理設備:網卡、網線、中繼器;老式集線器; 2、網絡互連層 網絡互連層是整個TCP/IP協議棧的核心。它的功能是把分組發往目標網絡或主機。同時,為了盡 快地發送分組,可能需要沿不同的路徑同時進行分組傳遞。因此,分組到達的順序和發送的順序 可能不同,這就需要上層必須對分組進行排序。 網絡互連層定義了分組格式和協議,即IP協議(Internet Protocol)。 網絡互連層除了需要完成路由的功能外,也可以完成將不同類型的網絡(異構網)互連的任務。 除此之外,網絡互連層還需要完成擁塞控制的功能。 物理設備:二層交換機,網橋 3、傳輸層 在TCP/IP模型中,傳輸層的功能是使源端主機和目標端主機上的對等實體可以進行會話。在傳輸 層定義了兩種服務質量不同的協議。即:傳輸控制協議TCP(transmission control protocol) 和用戶數據報協議UDP(user datagram protocol)?! CP協議是一個面向連接的、可靠的協議。 它將一臺主機發出的字節流無差錯地發往互聯網上的其他主機。在發送端,它負責把上層送下來的字節 流分成報文段并傳遞給下層。在接收端,它負責把收到的報文進行重組后遞交給上層。TCP協議還要處 理端到端的流量控制,以避免緩慢接收的接收方沒有足夠的緩沖區接收發送方發送的大量數據,UDP協 議是一個不可靠的、無連接協議,主要適用于不需要對報文進行排序和流量控制的場合。 物理設備:三層交換機,路由器;
4、應用層 TCP/IP模型將OSI參考模型中的會話層和表示層的功能合并到應用層實現?! ? 應用層面向不同的網絡應用引入了不同的應用層協議。其中,有基于TCP協議的,如文件傳輸協 議(File Transfer Protocol,FTP)、虛擬終端協議(TELNET)、超文本鏈接協議(Hyper Text Transfer Protocol,HTTP),也有基于UDP協議的。 物理設備:高層交換機等
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
第一步配置IP/NETMASK:本地通信 第二步配置路由(網關):跨網絡通信 第三部配置DNS服務器地址,Linux可以配置三個DNS:基于主機名的通信 第四步重啟網絡服務 實例: 1、vim /etc/sysconfig/network-scripts/ifcfg-eth0 (修改配置文件,永久有效) 2、編輯eth0文件,完成后保存退出 ONBOOT=no改為ONBOOT=yes BOOTPROTO=dhcp改為BOOTPROTO=static或none IPADDR=IP地址 NETMASK=mas地址 GATEWAY=網關地址 DNS1=dns服務器地址(dns可省略) 3重啟網絡服務 service network restart或/etc/init.d/network restart 即時生效:(重啟后失效) ifconfig eth0 192.168.0.1/24 ifconfig eth0 192.168.0.1 netmask 255.255.255.0 配置文件修改之后,如果要生效,需要重啟網絡服務; CentOS 6:# service network restart CentOS 7:# systemctl restart network.service
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
靜態指定: ifconfig:配置IP,NETMASK ifconfig IFACE IP/MASK [up|down] iproute2家族: ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route | netns } nmcli [ OPTIONS ] OBJECT { COMMAND | help } centos6:setup:text window 工具 centos6:nmtui:text window 工具 配置文件:RedHat及相關發行版,最簡單的在這一個配置文件里配。 /etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME (1) DNS服務器指定 :配置文件:/etc/resolv.conf (2) 本地主機名配置: 配置文件:/etc/sysconfig/network CentOS 7:hostnamectl set-hostname:設定主機名,永久有效; vim /etc/hostname hostname HOSTNAME 當前系統有效,重啟后無效; echo "VALUE" > /proc/sys/kernel/hostname 動態分配:依賴于本地網絡中有DHCP服務 DHCP:Dynamic Host Configure Procotol 路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主機使用紅色顯示;
[root@localhost scripts]# cat ping2.sh #!/bin/bash # declare -i uphosts=0 declare -i downhosts=0 for i in {1..254}; do if ping -W 1 -c 1 172.16.250.$i &> /dev/null; then echo -e "\033[0;32;1m 172.16.16.$i is up! \033[0m" let uphosts+=1 else echo -e "\033[0;31;1m 172.16.250.$i is down! \033[0m" let downhosts+=1 fi done echo "Up hosts: $uphosts, Down hosts: $downhosts." [root@localhost scripts]# [root@localhost scripts]# #!/bin/bash for ((i=1;i<255;i++));do ping -c 1 -w 1 "172.16.250.$i" >/dev/null if [ $? -eq 0 ];then echo -e "\033[0;32;1m 192.168.1.$i is up! \033[0m" else echo -e "\033[0;31;1m 192.168.1.$i is down! \033[0m" fi done
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、如何給網絡接口配置多個地址,有哪些方式?
[root@mylinux ~]# ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 臨時有效 [root@mylinux ~]# ip addr add 192.168.0.221/24 dev eth0:5 臨時有效 [root@mylinux network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:2 DEVICE=eth0 HWADDR=00:0C:29:8A:89:8B TYPE=Ethernet UUID=c65e7b55-1f46-449e-b4e6-4c53b3417bba ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static #網上別名不支持動態獲取地址,僅支持static, none IPADDR=192.168.111.11 NETMASK=255.255.255.0 GATEWAY=192.168.111.1 [root@mylinux network-scripts]#
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
ifconfig interface [aftype] options | address ... ifconfig -a 顯示所有接口,包括inactive狀態的接口; ifconfig IFACE_LABEL IPADDR/NETMASK#ifconfig eth1:3 192.168.19.2/24支持多個ip ifconfig eth1 192.168.1.12/24 #配置ip地址,立即生效。 ifconfig eth1 promisc #啟用混雜模式 ifconfig eth1 -promisc #關閉混雜模式 ifconfig eth1 0 #刪除eth1的ip地址 查看:# route -n 數字格式顯示 route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If] route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1 #添加路由,下一跳地址必須同網段 route add default gw 192.168.10.1 配置默認路由 刪除:#route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] route del -net 10.0.0.0/8 gw 192.168.10.1 route del default netstat -rn#顯示路由表 netstat -tnlp #顯示網絡連接信息,常用:-tan, -uan, -tnl, -unl, -tunlp netstat -i #顯示所有接口的統計數據 netstat -Ieth0#顯示指定的eth0接口統計數據,中間沒有空格。 ifup/ifdown:必須要有這個/etc/sysconfig/network-scripts/ifcfg-IFACE配置文件才支持。 hostname HOSTNAME#當前系統有效,重啟后無效 hostnamectl status:顯示當前主機名信息 hostnamectl set-hostname HOSTNAME:centos7設定主機名,永久有效 hostnamectl set-hostname mylinux #cat /etc/hostname vim /etc/sysconfig/network#contos6:此方法的設置不會立即生效; 但以后會一直有效 vim /etc/resolv.conf# 格式nameserver 218.104.111.122 如果網卡配置文件中也同時配置了DNS,生效的應該是網卡文件中的地址。 vim /etc/hosts #看你的需要,相關文件更改。支持別名 host/nslookup/dig#測試dns是否有效的工具#eg:dig -t A www.magedu.com#不檢查hosts文件 dig -x IP#IP --> FQDN大多數服務器不支持反解 ip link show=ip link list #display device attributes支持簡寫:ip li sh ip link help - 顯示簡要使用幫助 ip link set - change device attributes dev NAME (default):指明要管理的設備,dev關鍵字可省略; up和down:eg:ip link set eth1 dev up/down #啟用或禁用 multicast on或multicast off:啟用或禁用多播功能; name NAME:重命名接口 mtu NUMBER:設置MTU的大小,默認為1500; netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間; ip netns: - manage network namespaces. centos7默認支持 ip netns list:列出所有的netns ip netns add NAME:創建指定的netns #ip netns add mynet #ip link set eno16777736 netns mynet #ip netns exec mynet ip link show ip netns del NAME:刪除指定的netns #ip netns del mynet ip netns exec NAME COMMAND:在指定的netns中運行命令 # ip netns exec mynet ip link show ip addr add IFADDR dev IFACE # ip addr add 192.168.10.100/24 dev eth1 可以添加多個地址 #ip addr add 10.1.1.10/8 dev eth1 label eth1:0#指定基別支持ifconfig查看 [scope SCOPE_VALUE]:用處不大 global:全局可用; link:接口可用; host:僅本機可用; ip addr delete IFADDR dev IFACE #ip addr del 192.168.21.1/24 dev eth1 ip addr list [IFACE]:顯示接口的地址 ip addr flush dev IFACE #ip addr flush dev eth1 ip roote list ip route add - add new route ip route change - change route ip route replace - change or add new one ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP] #ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100 #ip route add 192.168.0.0/24 via 10.0.10.100 dev eth1 # ip route add default via GW ip route del TYPE PRIFIX 如果有多條的話需要具體指定。 #ip route delete 192.168.1.0/24 ip route get TYPE PRIFIX #ip route get 192.168.0.0/24 ip route flush - flush routing tables #ip route flush 169.254/16 ss [options] [ FILTER ] FILTER := [ state TCP-STATE ] [ EXPRESSION ] 選項: -t:TCP協議的相關連接 TCP的常見狀態: -u:UDP相關的連接 LISTEN:監聽 -w:raw socket相關的連接 ESTABLISEHD:建立的連接 -l:監聽狀態的連接 FIN_WAIT_1: -a:所有狀態的連接 FIN_WAIT_2: -n:數字格式 SYN_SENT: -p:相關的程序及其PID SYN_RECV: -e:擴展格式信息 CLOSED: -m:內存用量 EXPRESSION: -o:計時器信息 dport = sport = 示例:'( dport = :22 or sport = :22)' ~]# ss -tan '( dport = :22 or sport = :22 )' ~]# ss -tan state ESTABLISHED IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE 專用的命令的進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui) CentOS 6: service SERVICE {start|stop|restart|status} CentOS 7:systemctl {start|stop|restart|status} SERVICE[.service] 路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE 支持兩種配置方式,但不可混用: (1) 每行一個路由條目:TARGET via GW 10.0.0.0/8 via 192.168.10.2 (2) 每三行一個路由條目: ADDRESS#=TARGET ADDRESS0=20.0.0.0 NETMASK#=MASK NETMASK0=255.0.0.0 GATEWAY#=NEXTHOP GATEWAY0=192.168.10.2 nmcli [ OPTIONS ] OBJECT { COMMAND | help } connection - start, stop, and manage network connections nmcli device show nmcli device status nmcli device disconnect/connect eno16777736 ping [OPTION] destination -c #:發送的ping包個數; -w #:ping命令超時時長; -W #:一次ping操作中,等待對方響應的超時時長; -s #:指明ping包報文大?。? hping命令: (package: hping3) send (almost) arbitrary TCP/IP packets to network hosts --fast #快 --faster #比快更快 --flood #有多快發多快, -i uX #指定時間,多少微妙發一個包。 traceroute命令:跟蹤從源主機到目標主機之間經過的網關; - print the route packets trace to network host ftp命令: ftp: File Transfer Protocol ftp服務命令行客戶端工具, #ftp 192.168.1.1 lftp命令: lftp [-p port] [-u user[,pass]] [site] get, mget 下載 put, mput 上傳 rm, mrm 刪除 lftpget命令: lftpget [-c] [-d] [-v] URL [URL...] -c:繼續此前的下載; lftpget http://172.16.0.1/centos6.repo wget命令:非交互是下載器 The non-interactive network downloader. wget [option]... [URL]... -b:在后臺執行下載操作; -q:靜默模式,不顯示下載進度; -O file:下載的文件的保存位置; -c:續傳; --limit-rate=amount:以指定的速率傳輸文件;
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
rpm命令:rpm [OPTIONS] [PACKAGE_FILE] 安裝:-i, --install 升級:-U, --update, -F, --freshen 卸載:-e, --erase 查詢:-q, --query 校驗:-V, --verify 數據庫維護:--builddb, --initdb 安裝:rpm -ivh PACKAGE_FILE ... 升級:rpm -Uvh PACKAGE_FILE ...升級或安裝 升級:rpm -Fvh PACKAGE_FILE ...升級 卸載:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ... 查詢:rpm -qi | qf | qc | qf |qd | qpi | qpl | qpc 校驗:rpm {-V|--verify} [select-options] [verify-options] rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY] yum repolist [all|enabled|disabled] 顯示倉庫列表 yum list [all | glob_exp1] [glob_exp2] [...]顯示程序包 yum list {available|installed|updates} [glob_exp1] [...] 顯示程序包 yum install package1 [package2] [...] 安裝程序包: yum reinstall package1 [package2] [...] 重新安裝 yum update [package1] [package2] [...] 升級程序包 yum downgrade package1 [package2] [...] 降級 yum check-update 檢查可用升級 yum remove | erase package1 [package2] [...] 卸載程序包 yum info [...] 查看程序包information yum provides | whatprovides feature1 [feature2] [...] 查看指定的特性(可以是某文件)是由哪個程序包所提供 yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 清理本地緩存 yum makecache 構建緩存 yum search string1 [string2] [...] 以指定的關鍵字搜索程序包名及summary信息 yum deplist package1 [package2] [...] 查看指定包所依賴的capabilities yum history [info|list|packages-list|packages-info|summary|addon-info|redo| undo|rollback|new|sync|stats] 查看yum事務歷史 yum localinstall rpmfile1 [rpmfile2] [...]本地安裝軟件包 yum localupdate rpmfile1 [rpmfile2] [...] 本地更新軟件包 yum groupinstall group1 [group2] [...] 以組的形式安裝軟件包組件 yum groupupdate group1 [group2] [...] 更新組相關軟件包 yum grouplist [hidden] [groupwildcard] [...]獲取已安裝和沒安裝的軟件包組件 章 yum groupremove group1 [group2] [...] 移除軟件包組件 yum groupinfo group1 [...]查看軟件包組件相關信息 yum createrepo [options] <directory> 創建yum倉庫: yum的命令行選項: --nogpgcheck:禁止進行gpg check; -y: 自動回答為“yes”; -q:靜默模式; --disablerepo=repoidglob:臨時禁用此處指定的repo; --enablerepo=repoidglob:臨時啟用此處指定的repo; --noplugins:禁用所有插件; yum的repo配置文件中可用的變量: $releasever: 當前OS的發行版的主版本號; $arch: 平臺; $basearch:基礎平臺; $YUM0-$YUM9 實例:http://mirrors.magedu.com/centos/$releasever/$basearch/os
11、如何使用發行版光盤作為yum repository,請描述該過程。
(1) 掛載光盤至某目錄,例如/media/cdrom # mount -r -t iso9660 /dev/cdrom /media/cdrom (2) 創建配置文件:vim /etc/yum.repos.d/CentOS-Media.repo [c7-media] #yum倉庫的名字 name=CentOS-$releasever - Media #描述 baseurl=file:///media/cdrom/ #倉庫的訪問路徑,注意三個斜線 # file:///media # file:///media/cdrecorder/ gpgcheck=1 #使用前是否檢驗包 enabled=1 #是否啟用此倉庫 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #指定密鑰路徑 (3)查看倉庫: yum repolist
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
[root@mylinux scripts]# cat e.sh #!/bin/bash # declare -i k=0 declare -i s=0 for i in /etc/rc.d/rc3.d/*; do file=`basename $i` if [[ $file =~ ^K ]]; then echo "$file stop" let k++ else echo "$file start" let s+=1 fi done echo "The K file: $k,The S file: $s" [root@mylinux scripts]#
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
[root@mylinux scripts]# cat g.sh #!/bin/bash # declare -i sum=0 [ $# -lt 1 ] && echo "At least 1 username" && exit 1 for i in $*; do if id $i &> /dev/null; then sum+=$(id -u $i) else echo "$i is not an username" exit 2 fi done echo "The userID zhi he is: $sum." [root@mylinux scripts]#
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
[root@mylinux scripts]# cat h.sh #!/bin/bash # declare -i f=0 declare -i d=0 declare -i l=0 declare -i b=0 declare -i c=0 declare -i s=0 declare -i p=0 declare -i u=0 if [ $# -lt 1 ];then echo "At list a dirctory like /root" && exit 2 else for i in $*; do for filename in $(ls $i); do cd $i if [ -f $filename ]; then echo "$filename ==>common file." let f++ elif [ -d $filename ]; then echo "$filename ==>Directory." let d++ elif [ -L $filename ]; then echo "$filename ==>Symbolic link." let l++ elif [ -b $filename ]; then echo "$filename ==>block special file." let b++ elif [ -c $filename ]; then echo "$filename ==>character special file." let c++ elif [ -S $filename ]; then echo "$filename ==>Socket file." let s++ elif [ -p $filename ]; then echo "$filename ==>ming ming gua ndao file." let p++ else echo "$filenam ==>Unkown file" let u++ fi done done fi echo "#######################################################" echo "Directory: $d" echo "common file: $f" echo "Symbolic link: $l" echo "block special file: $b" echo "character special file: $c" echo "Socket file: $s" echo "ming ming guandao file:$p" echo "Unkown file: $u" [root@mylinux scripts]#
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
[root@mylinux scripts]# cat s.sh #!/bin/bash # [ $# -lt 1 ] && echo "Atleast a username." && exit 1 ! id $1 &> /dev/null && echo "No such user." && exit 2 userid=$(id -u $1) if [ $userid -eq 0 ]; then echo "root" elif [ $userid -ge 1000 ]; then echo "common user." else echo "System user." fi [root@mylinux scripts]#
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
[root@mylinux scripts]# cat x.sh #!/bin/bash # declare -i sum=0 for i in {1..10}; do if id user$i &> /dev/null;then echo "user$i exists" else useradd user$i && echo "user$i" | passwd --stdin user$i &> /dev/null let sum++ fi done echo "add $sum user finished" [root@mylinux scripts]# for i in {1..10}; do userdel -r user$i;done #刪除
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
[root@mylinux scripts]# cat ping2.sh #!/bin/bash for((i=20;i<=100;i++)) do ping -c 1 -w 1 172.16.250.$i &> /dev/null if [ $? -eq 0 ];then echo "172.16.250.$i is up" fi done [root@mylinux scripts]#
18、打印九九乘法表;
[root@mylinux scripts]# cat 994.sh #!/bin/bash # for ((j=1;j<=9;j++)); do for ((i=1;i<=j;i++)); do echo -e -n "${i}X${j}=${i}*${j}\t" done echo done [root@mylinux scripts]#
原創文章,作者:N24_小呆,如若轉載,請注明出處:http://www.www58058.com/64142
贊~總結的不錯,上面的幾個腳本能給出使用說明會更好一點,繼續加油~