1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋也叫橋接器,是連接兩個局域網的一種存儲/轉發設備,用來連接不同網段。 集線器稱為“Hub”,主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。 二層交換機工作于OSI模型的第2層(數據鏈路層),可識別數據包中的MAC地址信息,根據MAC地址進行轉發,并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。 三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部的數據交換,所具有的路由功能也是為這目的服務的,能夠做到一次路由,多次轉發。對于數據包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定等功能,由軟件實現。 路由器(Router),是連接因特網中各局域網、廣域網的設備,它會根據信道的情況自動選擇和設定路由,以最佳路徑,按前后順序發送信號。
2、IP地址的分類有哪些?子網掩碼的表示形式及其作用
IPv4 地址分類: 點分十進制:0-255 0000 0000 - 1111 1111 0.0.0.0-255.255.255.255 A類: 0 000 0000 - 0 111 1111: 1-127 網絡數:126, 127 每個網絡中的主機數: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 E類: 240-255 子網掩碼的設定必須遵循一定的規則。與二進制IP地址相同,子網掩碼由1和0組成,且1和0分別連續。子網掩碼的長度也是32位,左邊是網絡位,用二進制數字“1”表示,1的數目等于網絡位的長度;右邊是主機位,用二進制數字“0”表示,0的數目等于主機位的長度。這樣做的目的是為了讓掩碼與ip地址做按位與運算時用0遮住原主機數,而不改變原網絡段數字,而且很容易通過0的位數確定子網的主機數(2的主機位數次方-2,因為主機號全為1時表示該網絡廣播地址,全為0時表示該網絡的網絡號,這是兩個特殊地址)。對于A類地址來說,默認的子網掩碼是255.0.0.0;對于B類地址來說默認的子網掩碼是255.255.0.0;對于C類地址來說默認的子網掩碼是255.255.255.0。 只有通過子網掩碼,才能表明一臺主機所在的子網與其他子網的關系,使網絡正常工作。利用子網掩碼可以把大的網絡劃分成子網,即VLSM(可變長子網掩碼),也可以把小的網絡歸并成大的網絡即超網。
3、計算機網絡的分成模型有哪些(OSI模型和TCP/IP模型),每一層的功能及涉及到的物理設備有哪些。
(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網絡,請描述詳細的步驟。(手動指定的方式)
(1)vim /etc/sysconfig/network 添加hostname (2)vim /etc/sysconfig/network-script/ifcfg-eth0 指定IPADDR,GETWAY,NATMARSK,DNS,BOOTPROTO=static,ONBOOT=yes (3)service network restart
5、為Linux主機配置網絡信息的方式有哪些,請描述各個過程。
DHCP vim /etc/sysconfig/network-script/ifcfg-eth0 ifconfig INTERFACE IP netmask MASK ip addr { add | del } IFADDR dev STRING
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
#!/bin/bash # for i in { 1 254 };do ping -c 1 -w 1 172.16.250.$i &> /dev/null if [ $? -eq 0 ] ; then echo -e " \033[;32m 172.16.250.$i \033[0m" else echo -e " \033[;31m 172.16.250.$i \033[0m" fi done
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
DEVICE #網卡名 BOOTPROTO #ip地址分配方式, dhcp、static HWADDR #MAC地址 NM_CONTROLLED="yes" #network mamager參數, ONBOOT #網卡是否開機激活 TYPE #網絡類型 IPV6INIT=no #禁止IPV6 USERCTL=no #是否允許非root用戶控制該設備,為no,只能root用戶更改 IPADDR= #IP ADDR GATEWAY #gatway地址 NETMASK #掩碼 DNS1 #dns1地址 DNS2 #dns2地址
8、如何給網絡接口配置多個地址,有哪些方式?
ifconfig eth0:0 192.168.0.22/24 up ip addr add 192.168.100.124/24 dev eth0:0 復制為/etc/sysconfig/network-scripts/ifcfg-eth0:0, 然后更改配置文件內的網卡名為eth0:0,然后更換新的IP地址,重啟動網卡
9、常用的網絡管理類工具有哪些,并用示例形式描述他們的使用方法。
ifconfig命令 ifconfig [interface] # ifconfig -a # ifconfig INTERFACE [up|down] ifconfig interface [aftype] options | address ... # ifconfig INTERFACE IP/mask [up] # ifconfig INTERFACE IP netmask MASK route命令 路由管理命令 查看:route -n 添加:route add route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 目標:192.168.1.3 網關:172.16.0.1 ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 目標: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 默認路由,網關: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 刪除:route del route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 目標:192.168.1.3 網關:172.16.0.1 ~]# route del -host 192.168.1.3 目標:192.168.0.0 網關:172.16.0.1 ~]# route del -net 192.168.0.0 netmask 255.255.255.0 netstat命令: netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships 顯示網絡連接: 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 顯示路由表: netstat {--route|-r} [--numeric|-n] -r: 顯示內核路由表 -n: 數字格式 顯示接口統計數據: netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] # netstat -i # netstat -I IFACE ip命令: ip - show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route } link OBJECT: ip link - network device configuration set dev IFACE 可設置屬性: up and down:激活或禁用指定接口; show [dev IFACE]:指定接口 [up]:僅顯示處于激活狀態的接口 ip address - protocol address management ip addr { add | del } IFADDR dev STRING [label LABEL]:添加地址時指明網卡別名 [scope {global|link|host}]:指明作用域 global: 全局可用; link: 僅鏈接可用; host: 本機可用; [broadcast ADDRESS]:指明廣播地址 例如: ip addr add 192.168.1.111/24 dev eth0 label eth0:0 ip address show - look at protocol addresses [dev DEVICE] [label PATTERN] [primary and secondary] ip address flush - flush protocol addresses 使用格式同show ip route - routing table management ip route add 添加路由: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 delete 刪除路由:ip route del TARGET ip route show ip route flush [dev IFACE] [via PREFIX] ss命令: 格式:ss [OPTION]... [FILTER] 選項: -t: tcp協議相關 -u: udp協議相關 -w: 裸套接字相關 -x:unix sock相關 -l: listen狀態的連接 -a: 所有 -n: 數字格式 -p: 相關的程序及PID -e: 擴展的信息 -m:內存用量 -o:計時器信息 FILTER := [ state TCP-STATE ] [ EXPRESSION ]
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
CentOS系統上rpm命令管理程序包: 安裝、卸載、升級、查詢、校驗、數據庫維護 安裝: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v: verbose -vv: -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)uname -r 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版本內核 (2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留 查詢: rpm {-q|--query} [select-options] [query-options] [select-options] -a: 所有包 -f: 查看指定的文件由哪個程序包安裝生成 # rpm -qf /etc/fstab setup-2.5.58-9.el5 -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包文件做查詢操作; 查詢尚未安裝的程序包 rpm -qlp /PATH/TO/PACKAGE_FILE --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供; --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴; [query-options] --changelog:查詢rpm包的changlog (制作的,非作者發布的) -c: 查詢程序的配置文件 -d: 查詢程序的生成文檔 -i: information -l: 查看指定的程序包安裝后生成的所有文件; --scripts:程序包自帶的腳本片斷 -R: 查詢指定的程序包所依賴的CAPABILITY; --provides: 列出指定程序包所提供的CAPABILITY; --conflicts:列出創建包與哪些包可能沖突 用法: -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ... -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 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 包來源合法性驗正及完整性驗正: 完整性驗正:SHA256 來源合法性驗正:RSA 公鑰加密: 對稱加密:加密、解密使用同一密鑰; 非對稱加密:密鑰是成對兒的, public key: 公鑰,公開所有人 secret key: 私鑰, 不能公開 導入所需要公鑰: rpm --import /PATH/FROM/GPG-PUBKEY-FILE CentOS 7發行版光盤提供的密鑰文件:RPM-GPG-KEY-CentOS-7 數據庫重建: rpm {--initdb|--rebuilddb} initdb: 初始化 如果事先不存在數據庫,則新建之;否則,不執行任何操作; rebuilddb:重建 無論當前存在與否,直接重新創建數據庫; 回顧:Linux程序包管理的實現、rpm包管理器 rpm命令實現程序管理: 安裝:-ivh, --nodeps, --replacepkgs 卸載:-e, --nodeps 升級:-Uvh, -Fvh, --nodeps, --oldpackage 查詢:-q, -qa, -qf, -qi, -qd, -qc, -q --scripts, -q --changlog, -q --provides, -q --requires 校驗:-V 導入GPG密鑰:--import, -K, --nodigest, --nosignature 數據庫重建:--initdb, --rebuilddb Linux程序包管理(2) CentOS: yum, dnf URL: ftp://172.16.0.1/pub/ YUM: yellow dog, Yellowdog Update Modifier yum repository: yum repo 存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下:repodata); 文件服務器: ftp:// http:// nfs:// file:/// yum客戶端: 配置文件: /etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫的指向提供配置 倉庫指向的定義: man yum.conf [repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0} 是否啟用 gpgcheck={1|0} 是否檢查源文件合法性和完整性 gpgkey=URL enablegroups={1|0} failovermethod={roundrobin|priority} 默認為:roundrobin,意為隨機挑選; cost= 默認為1000 教室里的yum源:http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/ CentOS 6.6 X84_64 epel: http://172.16.0.1/fedora-epel/6/x86_64/ yum命令的用法: yum [options] [command] [package ...] command is one of: * install package1 [package2] [...] * update [package1] [package2] [...] * update-to [package1] [package2] [...] * check-update * upgrade [package1] [package2] [...] * upgrade-to [package1] [package2] [...] * distribution-synchronization [package1] [package2] [...] * remove | erase package1 [package2] [...] * list [...] * info [...] * provides | whatprovides feature1 [feature2] [...] * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] * makecache * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] * search string1 [string2] [...] * shell [filename] * resolvedep dep1 [dep2] [...] * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) * reinstall package1 [package2] [...] * downgrade package1 [package2] [...] * deplist package1 [package2] [...] * repolist [all|enabled|disabled] * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] * check * help [command] 顯示倉庫列表: repolist [all|enabled|disabled] 顯示程序包: list # yum list [all | glob_exp1] [glob_exp2] [...] # yum list {available|installed|updates} [glob_exp1] [...] 安裝程序包: install package1 [package2] [...] reinstall package1 [package2] [...] (重新安裝) 升級程序包: update [package1] [package2] [...] downgrade package1 [package2] [...] (降級) 檢查可用升級: check-update 卸載程序包: remove | erase package1 [package2] [...] 查看程序包information: info [...] 查看指定的特性(可以是某文件)是由哪個程序包所提供: provides | whatprovides feature1 [feature2] [...] 清理本地緩存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 構建緩存: makecache 搜索: search string1 [string2] [...] 以指定的關鍵字搜索程序包名及summary信息; 查看指定包所依賴的capabilities: deplist package1 [package2] [...] 查看yum事務歷史: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] 安裝及升級本地程序包: * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) 包組管理的相關命令: * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] 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 創建yum倉庫: createrepo [options] <directory>
11、如何使用發行版光盤作為yum repository,請描述該過程。
如何使用光盤當作本地yum倉庫: (1) 掛載光盤至某目錄,例如/media/cdrom # mount -r -t iso9660 /dev/cdrom /media/cdrom (2) 創建配置文件 [CentOS7] name= baseurl=file:/// gpgcheck=0 enabled=
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
#!/bin/bash # ls /etc/rc.d/rc3.d/K*|awk '{printf "%s Stop \n", $1}'|awk -F'/' '{print $NF}' ls /etc/rc.d/rc3.d/S*|awk '{printf "%s Start \n", $1}'|awk -F'/' '{print $NF}' k_lines=`ls /etc/rc.d/rc3.d/K*|awk '{print NR}'|tail -1` s_lines=`ls /etc/rc.d/rc3.d/S*|awk '{print NR}'|tail -1` echo "k start lines is $k_lines" echo "s start lines is $s_lines"
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;
[root@www shell]# cat sumuid.sh #!/bin/bash # declare -i sum_uid read -p "Please enter users' name:" u_in for u_test in $u_in;do if id $u_test &> /dev/null;then sum_uid+=`id $u_test | awk '{print $1}' | awk -F'=' '{print $2}' | awk -F'(' '{print $1}'` else echo "$user does not exist! Quit..." exit 1 fi done echo "The uid sum is $sum_uid"
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
#!/bin/bash # declare -i f_sum=0;b_sum=0;c_sum=0;d_sum=0;l_sum=0;p_sum=0;s_sum=0 for d_in in $*;do if ! [ -d $d_in ];then echo -e "\n$d_in is no such dir" else tree $d_in for f_test in $(ls $d_in);do if [ -L "$d_in/$f_test" ];then let l_sum++ elif [ -b "$d_in/$f_test" ];then let b_sum++ elif [ -c "$d_in/$f_test" ];then let c_sum++ elif [ -d "$d_in/$f_test" ];then let d_sum++ elif [ -f "$d_in/$f_test" ];then let f_sum++ elif [ -p "$d_in/$$f_test" ];then let p_sum++ elif [ -S "$d_in/$f_test" ];then let s_sum++ fi done fi done echo -e "\ndir is $d_sum\nf file is $f_sum\nb file is $b_sum\nc file is $c_sum\nl file is $l_sum\np file is $p_sum\ns file is $s_sum"
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;
#!/bin/bash # if [ $# -lt 1 ];then echo "At least one username" exit 1 fi if id $1 &> /dev/null;then uid=$(grep "^\<$1\>" /etc/passwd | cut -d: -f3) if [ $uid -ge 500 ];then echo "$1 is regular user" else echo "$1 is system user" fi else echo "$1 is not exists" fi
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最后顯示本次共添加了多少用戶;
#!/bin/bash # declare -i num for((i=1;i<11;i++)),do if ! id user$i &> /dev/null;then useradd user$i echo user$i:user$i | chpasswd let num++ fi done echo "Add $num users!"
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
#!/bin/bash # for i in { 20..100 };do ping -c 1 -w 1 172.16.250.$i &> /dev/null if [ $? -eq 0 ] ; then echo -e " 172.16.250.$i is online!" fi done
18、打印九九乘法表;
#!/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 }
原創文章,作者:N21-孟然,如若轉載,請注明出處:http://www.www58058.com/41003
排版不是很好看啊,圖如果是自己畫的話,那會非常棒