馬哥linux第8周作業

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章