1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。
網橋: 連接不同子網,使其透明通信,它們工作在鏈路層。它們處理的是鏈路層數據,一般來說就是以太 網幀格式的 數據,缺點是無法避免“廣播風暴”,交換機就是網橋的集合。 集線器: 集線器的基本功能是信息分發,它把一個端口接收的所有信號向所有端口分發出去。一些集線器 在分發之前將弱信號重新生成,一些集線器整理信號的時序以提供所有端口間的同步數據通信, 工作在物理層,集線器只是把各個終端互相連接起來而已,處理的是信號。 二層交換機: 傳統交換機從網橋發展而來,屬於OSI第二層即數據鏈路層設備。它根據MAC地址尋址,通 過站表選擇路由,站表的建立和維護由交換機自動進行。 三層交換機: 三層交換機就是具有部分路由器功能的交換機,三層交換機的最重要目的是加快大型局域網內部 的數據交換,所具有的路由功能也是爲這目的服務的,能夠做到一次路由,多次轉發。對於數據 包轉發等規律性的過程由硬件高速實現,而像路由信息更新、路由表維護、路由計算、路由確定 等功能,由軟件實現。三層交換技術就是二層交換技術+三層轉發技術,三層交換技術是在網絡 模型中的第三層實現了數據包的高速轉發,既可實現網絡路由功能,又可根據不同網絡狀況做到 最優網絡性能。 路由器: 路由器屬於OSI第三層即網絡層設備,它根據IP地址進行尋址,通過路由表路由協議產生, 處理網絡層數據,也就是ip報文格式的數據,目前來看網絡層的報文格式是ip一家獨大,當然路 由器也可以處理tcp、udp等四層數據,以及ppp等三層數據。但它的主要作用在於ip轉發,所以 我們一般認爲它是網絡層設備
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:244-239 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)。 TCP協議是一個面向連接的、可靠的協議。它將一臺主機發出的字節流無差錯地發往互聯網上的其他主機。在發送端,它負責把上層送下來的字節流分成報文段並傳遞給下層。在接收端,它負責把收到的報文進行重組後遞交給上層。TCP協議還要處理端到端的流量控制,以避免緩慢接收的接收方沒有足夠的緩衝區接收發送方發送的大量數據,UDP協議是一個不可靠的、無連接協議,主要適用於不需要對報文進行排序和流量控制的場合。物理設備:三層交換機,路由器; 4、應用層 TCP/IP模型將OSI參考模型中的會話層和表示層的功能合併到應用層實現。 應用層面向不同的網絡應用引入了不同的應用層協議。其中,有基於TCP協議的,如文件傳輸協 議(File Transfer Protocol,FTP)、虛擬終端協議(TELNET)、超文本鏈接協議(Hyper Text Transfer Protocol,HTTP),也有基於UDP協議的。 物理設備:高層交換機等
4、如何將Linux主機接入到TCP/IP網絡,請描述詳細的步驟。(手動指定的方式)
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
5、爲Linux主機配置網絡信息的方式有哪些,請描述各個過程。
Ifconfig命令: 第一種使用ifconfig命令配置網卡的ip地址。此命令通常用來零時的測試用,計算機啓動後 ip地址的配置將自動失效。具體用法如下。Ipconfig ethx ipadd netmask x.x.x.x。 其中ethx中的x代表第幾快以太網卡,默認第一塊爲0.ipadd代表ip地址。x.x.x..x爲子網掩碼。 例如給網卡eth0配置的ip地址爲192.168.1.1 子網掩碼爲 255.255.255.0 setup命令: 輸入setup將會出現圖形化界面,選擇Network configuration 之後再選擇Device configuration選擇要設置的網卡,設置IP地址,mac地址,網關,dns等 之後保存退出重啓網絡服務。 圖形界面: 1、系統-首選項-網絡連接 2、編輯 3、方法-選“手動”,地址下面有IP、子網掩碼、網關、DNS。填好,點擊“應用”即可。 當前立即生效,但不是永久生效: ifconfig eth0 192.168.0.1/24 或 ifconfig eth0 192.168.0.1 netmask 255.255.255.0 ip addr replace 192.168.1.8/24 dev eth0 centos7 nmcli c modify eth0 +ipv4.addresses 18.168.1.13/24 nmcli con down eth0;nmcli c up eth0
6、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;
在線的主機使用綠色顯示;
不在線的主使用紅色顯示;
(測試用192.168.2.1-192.168.2.254測試) [root@localhost tmp]# vim ip.sh #!/bin/bash declare -i i=1 declare -i uphosts=0 declare -i downhosts=0 net='192.168.2.' while [ $i -le 254 ]; do if ping -c 1 -w 1 $net$i &> /dev/null; then echo -e "\033[32m $net$i is up!" let uphosts++ else echo -e "\033[31m $net$i is down!" let downhosts++ fi let i++ done echo "Up hosts:$uphosts" echo "Down hosts:$downhosts [root@localhost tmp]# bash -n ip.sh [root@localhost tmp]# bash ip.sh 192.168.2.1 is up! 192.168.2.2 is down! 192.168.2.3 is down! 192.168.2.4 is down! 192.168.2.5 is down! 192.168.2.6 is down! 192.168.2.7 is down! 192.168.2.8 is down!
................... 192.168.2.99 is down! 192.168.2.100 is up! 192.168.2.101 is down! 192.168.2.102 is down! 192.168.2.103 is down! 192.168.2.104 is down! 192.168.2.105 is down! 192.168.2.106 is up! 192.168.2.107 is down! 192.168.2.108 is down! 192.168.2.109 is up! 192.168.2.110 is up! ....................... 192.168.2.252 is down! 192.168.2.253 is down! 192.168.2.254 is down! Up hosts:5 Down hosts:249
7、詳細描述每個網絡接口的配置文件中各個參數的含義和其所對應的值;
DEVICE:此配置文件的設備 HWADDR:此設備的MAC地址 BOOTPROTO:激活此設備使用的地址配置協議,常用的:dhcp,static,none,bootp NM_CONTROLLED:NM是networkManager的簡寫(/etc/rc.d/init.d/):此網卡是否接受nm的控制, centos6建議爲no ONBOOT:在系統引導是時是否激活此設備 TYPE:接口類型: 常見的有Ethernet,Bridge UUID:設備唯一標識 IPADDR:指明ip地址 NETMASK:子網掩碼 GATEWAY:默認網關 DNS1:DNS服務器指向 DNS2:DNS2服務器指向 USERCTL:普通用戶是否可控制此設備 PEERDNS:如果bootproto的值爲dhcp,是否允許dhcp server 分配的dns服務器指向信息直接覆蓋 至/etc/resolv.conf文件中
8、如何給網絡接口配置多個地址,有哪些方式?
1、永久有效 仿照/etc/sysconfig/network-scripts/ifcfg-eth0增加一文件根據網絡虛擬接口的名字進行命名, 例如ifcfg-eth0:0或者ifcfg-eth0:1等等 下邊看下ifcfg-eth0:0文件裏面的配置信息 DEVICE=eth0:0 #網絡虛擬接口eth0:0 ONBOOT=yes #啓動的時候激活 BOOTPROTO=static #使用靜態ip地址 IPADDR=192.168.0.1 #分配ip地址 NETMASK=255.255.255.0 #子網掩碼 2、立即生效 ifconfig eth0:0 192.168.0.1 netmask 255.255.255.0 up ip addr add 192.168.1.8/24 dev eth0label 'eth0:0' nmcli c modify eth0 +ipv4.addresses 18.168.1.13/24(增加ip,要禁用啓用網卡生效)
9、常用的網絡管理類工具有哪些,並用示例形式描述他們的使用方法。
ifconfig命令: ifconfig [interface] -a:所有接口信息 ifconfig INTRENAME:顯示指定的接口信息 ifconfig interface [aftype] options | address ... #ifconfig intername IP/MAS ifconfig eth0 192.168.0.1/24 ifconfig eth0 192.168.0.1 netmask 255.255.255.0 當前立即生效,但不是永久生效 啓用混雜模式 -promisc:不啓用 promisc:啓用 route命令:路由管理命令 查看:route -n 添加 route add ip route add 192.168.1.0/24 via 172.16.1.1 dev eth0 添加去往192.168.1.0/24的路由, 下一跳是172.16.1.1;ip route add default 172.16.1.1 添加默認路由 刪除: route del 主機: route del -host 192.168.1.3 網絡:route del -net 182.168.0.0 netmask 255.255.255.0 默認: route del default ip命令: ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | addrlabel | route | rule | neigh | tunnel | maddr | mroute | monitor } OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] }
link:管理網絡設備 set: ip link set dev etho down (up and down 激活或禁用指定接口) show: ip link show dev name:顯示指定接口 up:僅顯示處於up狀態的接口 addr: ip addr show 查看 ip addr { add | del } IFADDR dev STRING ip addr add 192.168.1.8/24 dev eth0 ip addr replace 192.168.1.8/24 dev eth0 ip addr add 192.168.1.8/24 dev eth0label 'eth0:0'(同一個網卡不同別名上面的操作只是新增了ip地址,並不是替換原有的ip) ip del 192.168.1.8/24 dev eth0 刪除 ip addr dev 192.168.1.8/24 dev eth0label 'eth0:0' ip addr [scope {global|link|host}] [broadcast ADDRESS] scope:指明作用域,globa:全局可用,link:僅接口可用,host:僅本機可用 broadcast:指明廣播地址 ip addr show [dev Device] [label LABEL] [primary主地址 and secondary輔地址] ip addr flush 默認清除所有同show,指定相關條件的地址 清除
route: ip route add TARGET via GW dev IFACE src SOURCE_IP源ip ip route add 192.168.1.3 via 172.16.0.1 dev eth0 ip route add 192.168.0.0/24 via 172.16.0.1 dev eth0 ip route add default via 172.16.0.1 dev eth0 默認路由 TARGET: 主機路由:只寫ip 網絡路由:ip/mask ip route delete ip route del TARGET ip route show ip route flush
10、Linux系統軟件包管理方法(安裝、升級、卸載等操作)有哪些,以及如何管理的。
rpm -i 安裝指定rpm程序包 rpm -e 卸載指定程序 rpm –test 測試安裝 rpm –nodeps 忽略依賴關係 rpm –replacepkgs 重新安裝 rpm –nosignature:不檢查來源的合法性 rpm –upgrage 安裝有舊程序包,則升級,如果不存在舊版程序包,則安裝 rpm –freshen:安裝有舊程序包時,則升級,如果不存,則不執行升級操作 rpm -q{l | c } 顯示指定程序是否安裝\安裝生成的文件\配置文件 yum install 安裝指定程序 yum remove 卸載指定程序 yum update 升級指定程序 yum groupinstall 安裝組程序包
yum groupupdate 升級組程序 yum groupremove 卸載組程序 yum info 查看指定程序的信息
11、如何使用發行版光盤作爲yum repository,請描述該過程。
首先掛載到某一個目錄,如mount /dev/cdrom /mnt 編輯或創建/etc/yum.repos.d/ 目錄下以repo結尾的文件。 vim /etc/yum.repos.d/localadd.repos [localbase] name=local centos name 名稱 baseurl=file:///mnt/ 路徑 cost=1 開銷 gpgcheck=0 不檢查 enabled=1 開啓
12、寫一個腳本,完成以下功能
(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,並且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,並且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;
[root@localhost ~]# vim rc.sh #!/bin/bash declare -i k=0 declare -i s=0 for i in $(ls /etc/rc.d/rc3.d/K* | grep -o "[^/]*$"); do echo "$i stop" let k=$k+1 done for i in $(ls /etc/rc.d/rc3.d/S* | grep -o "[^/]*$"); do echo "$i start" let s=$s+1 done echo "K files:$k" echo "S files:$s" [root@localhost ~]# bash -n rc.sh [root@localhost ~]# bash rc.sh K10saslauthd stop K61nfs-rdma stop K87restorecond stop K89netconsole stop K89rdisc stop K95rdma stop S02lvm2-monitor start S08ip6tables start S08iptables start S10network start S11auditd start S12rsyslog start
S15mdmonitor start S25blk-availability start S25netfs start S26udev-post start S50kdump start S55sshd start S80postfix start S90crond start S99local start K files:6 S files:15
13、寫一個腳本,完成以下功能
(1) 腳本能接受用戶名作爲參數;
(2) 計算此些用戶的ID之和;
[root@localhost ~]# vim user.sh #!/bin/bash declare -i sum=0 if [ $# -lt 2 ]; then echo "Please enter two user name" exit 1 fi if [ $# -ge 2 ]; then for i in $@; do if id $i &> /dev/null; then userid=`id -u $i` let sum=$sum+$userid else echo "Sorry user $i not found" fi done fi echo "user id sum:$sum" [root@localhost ~]# bash -n user.sh [root@localhost ~]# bash user.sh Please enter two user name [root@localhost ~]# bash user.sh toot Please enter two user name [root@localhost ~]# bash user.sh toot root Sorry user toot not found user id sum:0 [root@localhost ~]# bash user.sh root mageedu user id sum:500
[root@localhost ~]# bash user.sh tom mageedu ftp mail user id sum:1023
14、寫一個腳本
(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;
[root@localhost tmp]# vim dir.sh #!/bin/bash declare -i fsum=0;bsum=0;csum=0;dsum=0;lsum=0;psum=0;ssum=0 if [ $# -lt 1 ]; then echo "please enter one dir" exit 1 fi if [ $# -ge 1 ]; then for i in $@; do if [ ! -d $i ]; then echo "sorry $i is not dir" else tree $i for j in $(ls $i); do if [ -L "$i/$j" ];then let lsum++ elif [ -b "$i/$j" ];then let bsum++ elif [ -c "$i/$j" ];then let csum++ elif [ -d "$i/$j" ];then let dsum++ elif [ -f "$i/$j" ];then let fsum++ elif [ -p "$i/$j" ];then let psum++ elif [ -S "$i/$j" ];then let ssum++ fi done fi done fi echo "dir is:$dsum" echo "file is:$fsum"
echo "b file is:$bsum" echo "c file is:$csum" echo "l file is:$lsum" echo "p file is:$psum" echo "s file is:$ssum" [root@localhost tmp]# vim dir.sh [root@localhost tmp]# bash -n dir.sh [root@localhost tmp]# bash dir.sh /etc/passwd sorry /etc/passwd is not dir dir is:0 file is:0 b file is:0 c file is:0 l file is:0 p file is:0 s file is:0 [root@localhost tmp]# bash dir.sh /dev/ /dev/ ├── agpgart ├── block │ ├── 1:0 -> ../ram0 │ ├── 1:1 -> ../ram1 │ ├── 1:10 -> ../ram10 │ ├── 11:0 -> ../sr0
│ ├── 1:11 -> ../ram11 │ ├── 1:12 -> ../ram12 │ ├── 1:13 -> ../ram13 │ ├── 1:14 -> ../ram14 │ ├── 1:15 -> ../ram15 │ ├── 1:2 -> ../ram2 ....................... ├── VolGroup │ ├── lv_home -> ../dm-2 │ ├── lv_root -> ../dm-0 │ └── lv_swap -> ../dm-1 └── zero 29 directories, 410 files dir is:16 file is:0 b file is:31 c file is:122 l file is:15 p file is:0 s file is:1
15、寫一個腳本
通過命令行傳遞一個參數給腳本,參數爲用戶名
如果用戶的id號大於等於500,則顯示此用戶爲普通用戶;
[root@localhost tmp]# vim us.sh #!/bin/bash if [ $# -lt 1 ]; then echo "please enter a user naem" exit 1 fi if [ $# -ge 1 ]; then for i in $@; do if id $i &> /dev/null; then userid=`id -u $i` if [ $userid -ge 500 ]; then echo " $i is a regular user" else echo " $i is a system user" fi else echo " sorry $i user is not found" fi done fi [root@localhost tmp]# bash -n us.sh [root@localhost tmp]# bash us.sh please enter a user naem [root@localhost tmp]# bash us.sh yy sorry yy user is not found [root@localhost tmp]# bash us.sh root root is a system user [root@localhost tmp]# bash us.sh root yy root is a system user sorry yy user is not found [root@localhost tmp]# bash us.sh root mageedu
root is a system user mageedu is a regular user [root@localhost tmp]# bash us.sh tom mageedu tom is a regular user mageedu is a regular user
16、寫一個腳本
(1) 添加10用戶user1-user10;密碼同用戶名;
(2) 用戶不存在時才添加;存在時則跳過;
(3) 最後顯示本次共添加了多少用戶;
[root@localhost tmp]# vim adduser.sh #!/bin/bash declare -i i=0 declare -i users=0 if [ ! $UID -eq 0 ]; then echo "welcome root create user" exit 1 fi while [ $i -le 10 ]; do let i++ if id user$i &> /dev/null; then echo "user exists" continue else useradd user$i if [ $? -eq 0 ]; then echo "user$i" | passwd --stdin user$i &> /dev/null echo " New user:user$i add sucess" let users=$users+1 fi fi done echo "addusers:$users" [root@localhost tmp]# bash -n adduser.sh [root@localhost tmp]# bash adduser.sh
user exists user exists user exists user exists user exists user exists New user:user7 add sucess New user:user8 add sucess New user:user9 add sucess New user:user10 add sucess addusers:4 [root@localhost tmp]# bash adduser.sh user exists user exists user exists user exists user exists user exists user exists user exists user exists user exists user exists addusers:0
17、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;
[root@localhost tmp]# vim ip2.sh #!/bin/bash declare -i i=1 declare -i uphosts=0 declare -i downhosts=0 net='192.168.2' for i in {1..254}; do ping -c 1 -w 1 ${net}.${i} &> /dev/null if [ $? -eq 0 ]; then echo "${net}.${i} is up !" let uphosts++ else echo "${net}.${i} is down!!" let downhosts++ fi done echo "Up hosts is:$uphosts" echo "Down hosts is:$downhosts" [root@localhost tmp]# bash -n ip2.sh [root@localhost tmp]# bash ip2.sh 192.168.2.1 is up ! 192.168.2.2 is down!! 192.168.2.3 is down!! 192.168.2.4 is down!! .....................
192.168.2.249 is down!! 192.168.2.250 is down!! 192.168.2.251 is down!! 192.168.2.252 is down!! 192.168.2.253 is down!! 192.168.2.254 is down!! Up hosts is:7 Down hosts is:247
18、打印九九乘法表;
for: [root@localhost tmp]# vim nine.sh #!/bin/bash declare -i i=1 declare -i j=1 for i in {1..9}; do for j in $(seq 1 $i); do echo -e -n "${j}X${i}=$[$j*$i]\t" done echo done [root@localhost tmp]# bash -n nine.sh [root@localhost tmp]# bash nine.sh 1X1=1 1X2=22X2=4 1X3=32X3=63X3=9 1X4=42X4=83X4=124X4=16 1X5=52X5=103X5=154X5=205X5=25 1X6=62X6=123X6=184X6=245X6=306X6=36 1X7=72X7=143X7=214X7=285X7=356X7=427X7=49 1X8=82X8=163X8=244X8=325X8=406X8=487X8=568X8=64 1X9=92X9=183X9=274X9=365X9=456X9=547X9=638X9=729X9=81
while [root@localhost tmp]# vim nine2.sh #!/bin/bash declare -i i=1 declare -i j=1 while [ $i -le 9 ]; do while [ $j -le $i ]; do echo -e -n "${j}X${i}=$[$j*$i]\t" let j++ done let j=1 let i++ echo done [root@localhost tmp]# bash -n nine2.sh [root@localhost tmp]# bash nine2.sh 1X1=1 1X2=22X2=4 1X3=32X3=63X3=9 1X4=42X4=83X4=124X4=16 1X5=52X5=103X5=154X5=205X5=25 1X6=62X6=123X6=184X6=245X6=306X6=36 1X7=72X7=143X7=214X7=285X7=356X7=427X7=49 1X8=82X8=163X8=244X8=325X8=406X8=487X8=568X8=64 1X9=92X9=183X9=274X9=365X9=456X9=547X9=638X9=729X9=81
until [root@localhost tmp]# vim nine3.sh #!/bin/bash declare -i j=1 declare -i i=1 until [ $j -gt 9 ]; do until [ $i -gt $j ]; do echo -n -e "${i}X${j}=$[$i*$j]\t" let i++ done echo let i=1 let j++ done [root@localhost tmp]# bash -n nine3.sh [root@localhost tmp]# bash nine3.sh 1X1=1 1X2=22X2=4 1X3=32X3=63X3=9 1X4=42X4=83X4=124X4=16 1X5=52X5=103X5=154X5=205X5=25 1X6=62X6=123X6=184X6=245X6=306X6=36 1X7=72X7=143X7=214X7=285X7=356X7=427X7=49 1X8=82X8=163X8=244X8=325X8=406X8=487X8=568X8=64 1X9=92X9=183X9=274X9=365X9=456X9=547X9=638X9=729X9=81