一、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。

  • 网桥(Bridge)

    网桥是第2层的设备,它设计用来创建两个或多个LAN分段。其中,每一个分段都是一个独立的冲突域。网桥设计用来产生更大可用宽带。它的目的是过滤LAN的通信流,使得本地的通信流保留在本地,而让那些定向到LAN其他部分(分段)的通信流转发到那里去。每一台网络设备在NIC(网络接口卡)中都有一个惟一的MAC(介质访问控制)地址。网桥会记录它每一边的MAC地址,然后基于这张MAC地址表作出转发决策。网桥已被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。

  • 集线器

    集线器的主要功能是对接收到的信号进行再生×××放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。集线器的基本功能是信息分发,它把一个端口接收的所有信号向所有端口分发出去。一些集线器在分发之前将弱信号重新生成,一些集线器整理信号的时序以提供所有端口间的同步数据通信。

  • 二层交换机

    二层交换机是对应于OSI/RM的第二协议层来定义的,因为它只能工作在OSI/RM开放体系模型的第二层--数据链路层。第二层交换机依赖于链路层中的信息(如MAC地址)完成不同端口数据间的线速交换,主要功能包括物理编址、错误校验、帧序列以及数据流控制。这是最原始的交换技术产品,目前桌面型交换机一般是属于这类型,因为桌面型的交换机一般来说所承担的工作复杂性不是很强,又处于网络的最基层,所以也就只需要提供最基本的数据链接功能即可。目前二层交换机应用最为普遍(主要是价格便宜,功能符合中、小企业实际应用需求),一般应用于小型企业或中型以上企业网络的桌面层次。

  • 三层交换机

    三层交换机就是具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。三层交换技术就是二层交换技术+三层转发技术。传统交换技术是在OSI网络标准模型第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。在实际应用过程中,典型的做法是:处于同一个局域网中的各个子网的互联以及局域网中VLAN间的路由,用三层交换机来代替路由器,而只有局域网与公网互联之间要实现跨地域的网络访问时,才通过专业路由器。

  • 路由器

    路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。


二、IP地址的分类有哪些?子网掩码的表示形式及其作用

类别
IP地址范围缺省子网掩码
A
0.0.0.0-127.255.255.255
255.0.0.0
B
128.0.0.0-191.255.255.255255.255.0.0
C
192.0.0.0-223.255.255.255255.255.255.0
D(多播地址)
224.0.0.0-239.255.255.255

E(保留地址)
240.0.0.0~255.255.255.254



  • 子网掩码通常有以下2种格式的表示方法:

    1. 通过与IP地址格式相同的点分十进制表示

    如:255.0.0.0 或255.255.255.128

    2. 在IP地址后加上"/"符号以及1-32的数字,其中1-32的数字表示子网掩码中网络标识位的长度

    如:192.168.1.1/24 的子网掩码也可以表示为255.255.255.0

    子网掩码一般为255.255.255.0

  • 子网掩码作用

    子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用有两个,一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。二是用于将一个大的IP网络划分为若干小的子网络。



三、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。

  • OSI模型

    功能
    物理设备
    物理层
    利用传输介质为数据链路层提供物理连接,实现比特流的透明传输网卡、网线、集线器、中继器、调制解调器
    数据链路层
    通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路
    网桥、2层交换机
    网络层
    通过路由选择算法,为报文或分组通过通信子网选择最适当的路径
    路由器、3层交换机
    传输层
    向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输

    会话层
    向两个实体的表示层提供建立和使用连接的方法
    表示层它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层

    应用层
    它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作


四、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)

[08:52:50 root@qa36 ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0            #修改网eth0卡配置文件
DEVICE=eth0            #网卡接口名称
TYPE=Ethernet            #网卡类型
ONBOOT=yes            #系统启动时是否自动加载
NM_CONTROLLED=no            #是否开启network manger托管            
BOOTPROTO=static            #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议
IPADDR=10.18.11.36            #网卡IP地址
NETMASK=255.255.255.0            #网卡网络地址
GATEWAY=10.18.11.1            #网卡网关地址

[09:04:03 root@qa36 ~]#vim /etc/resolv.conf            #修改DNS配置文件
nameserver 10.18.15.250            #表明DNS服务器的IP地址

[09:06:32 root@qa36 ~]#service network restart            #重启网络


五、为Linux主机配置网络信息的方式有哪些,请描述各个过程。

  • 临时修改方案,重启后失效

    Ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up            #设置ip地址

    route add –net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.1            #添加默认路由

  • 永久修改方案

    vi /etc/sysconfig/network-scripts/ifcfg-eth0            #修改接口配置文件,可以配置IP、掩码、网关、DNS等信息

    service network restart             #重启网络服务后生效


六、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;

    在线的主机使用绿色显示;

    不在线的主使用红色显示;

[root@localhost shell]# cat ping2.sh          #改个网段方便测试
#!/bin/bash/
ip=10.18.11.
for i in `seq 1 254`;do
        if `ping -w 1 -c 1 ${ip}${i} >/dev/null 2>&1` ;then
                echo -e "\e[32m $ip$i is up \e[0m"
        else
                echo -e "\e[31m $ip$i is down \e[0m"
        fi
done

马哥2016全新Linux+Python高端运维班第八周作业_马哥

七、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;

TYPE=Ethernet        #配置文件接口类型
DEVICE=eth0        #网卡接口名称  
BOOTPROTO=static        #BOOTPROTO:系统启动地址协议 --none:不使用启动地址协议 --bootp:BOOTP协议 --dhcp:DHCP动态地址协议 --static:静态地址协议
ONBOOT=yes            #系统启动时是否激活  --yes:系统启动时激活该网络接口  --no:系统启动时不激活该网络接口
IPADDR=10.0.1.27        #IP地址
NETMASK=255.255.255.0        #子网掩码
GATEWAY=10.0.1.1        #网关  
HWADDR=00:0C:29:13:5D:74        #MAC地址
DNS1=10.0.1.41       #DNS地址,可以设置3个
NM_CONTROLLED=no        #是否由Network Manager控制该网络接口  --由Network Manager控制  --不由Network Manager控制


八、如何给网络接口配置多个地址,有哪些方式?

  • 修改配置文件

    cp ifcfg-eth0 ifcfg-eth0:1”复制eth0的配置文件,文件名在原文件名后加":1",修改ifcfg-eth0:1中相应的字段

  • 设置网卡的ip别名

    ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0 up

    ip addr add 192.168.0.3/24 dev eth0 label eth0:2

九、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。

  • ping

[root@localhost ~]# ping -c 3 -i 0.5 10.18.11.1        #指定时间间隔和次数限制
PING 10.18.11.1 (10.18.11.1) 56(84) bytes of data.
64 bytes from 10.18.11.1: icmp_seq=1 ttl=255 time=1.77 ms
64 bytes from 10.18.11.1: icmp_seq=2 ttl=255 time=0.892 ms
64 bytes from 10.18.11.1: icmp_seq=3 ttl=255 time=0.852 ms
  • traceroute命令

traceroute -n www.baidu.com        #显示IP地址,不查主机名
traceroute to www.baidu.com (115.239.211.112), 30 hops max, 60 byte packets
1  10.18.11.1  0.673 ms  1.329 ms  1.609 ms
2  10.18.13.252  0.563 ms  0.919 ms  1.216 ms
3  180.167.69.201  5.236 ms  5.517 ms  5.545 ms
4  124.74.107.121  5.622 ms  5.629 ms  5.748 ms
5  101.95.124.77  5.789 ms  5.783 ms  5.781 ms
6  124.74.254.193  6.996 ms  7.225 ms  7.966 ms
7  59.43.77.145  7.636 ms  7.504 ms 59.43.77.153  7.485 ms
8  59.43.80.10  10.558 ms  6.774 ms  6.564 ms
9  202.97.68.50  6.244 ms 202.97.68.142  9.073 ms  9.038 ms
10  220.191.200.102  7.501 ms 220.191.200.42  9.830 ms 220.191.200.102  9.749 ms
11  * * *
12  115.239.209.2  7.410 ms  7.309 ms 115.239.209.10  8.467 ms
13  * * *
14  * * *
30  * * *
  • ipconfig

[root@localhost~]#ifconfig        #处于激活状态的网络接口
eth0      Link encap:Ethernet  HWaddr 00:50:56:A8:0C:A5  
          inet addr:10.18.11.36  Bcast:10.18.11.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fea8:ca5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1201071 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1331553 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:816347237 (778.5 MiB)  TX bytes:192006907 (183.1 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:9808682 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9808682 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2376516619 (2.2 GiB)  TX bytes:2376516619 (2.2 GiB)
[root@localhost~]#ifconfig-a        #所有配置的网络接口,不论其是否激活
[root@localhost~]#ifconfig eth0        #显示eth0的网卡信息
[root@localhost~]#ifconfig eth0 down        #关闭eth0网卡
[root@localhost~]#ifconfig eth0 up        #开启eth0网卡
[root@localhost~]#ifconfig eth0 10.18.11.100/24        #设置IP地址及掩码
  • route

[root@localhost ~]# route        #显示当前路由
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.18.11.1      0.0.0.0         UG    100    0        0 ens192
10.18.11.0      0.0.0.0         255.255.255.0   U     100    0        0 ens192
[root@localhost ~]# route add default gw 192.168.0.1  #添加默认网关
[root@localhost ~]# route del default gw 192.168.0.1  #删除默认网关
[root@localhost ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0   #增加一条路由
  • netstat

[root@localhost ~]# netstat -a        #列出所有当前的连接
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0     52 10.18.11.29:ssh         172.18.2.221:61950      ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7          
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     13078    /var/run/NetworkManager/private
unix  2      [ ACC ]     STREAM     LISTENING     15657    public/pickup
unix  2      [ ACC ]     STREAM     LISTENING     15661    public/cleanup
...

[root@localhost ~]# netstat -at        #列出 TCP 协议的连接
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0     52 10.18.11.29:ssh         172.18.2.221:61950      ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN    

[root@localhost ~]# netstat -au        #列出 UDP 协议的连接
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
udp        0      0 *:sunrpc                    *:*                                     
udp        0      0 *:ipp                       *:*                                     
udp        0      0 qa36:ntp                    *:*                                     
udp        0      0 qa:ntp                      *:*

[root@localhost ~]#  netstat -tnl        #列出监听中tcp的连接
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     

[root@localhost ~]# netstat -n        #显示所有已建立的有效连接
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0     52 10.18.11.29:22          172.18.2.221:61950      ESTABLISHED
  • ss

ss参数用法同netstat
ss -o state established '( dport = :smtp or sport = :smtp )'        #显示所有已建立的SMTP连接
ss -o state established '( dport = :http or sport = :http )'        #显示所有已建立的HTTP连接


十、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。

  • rpm命令

#RPM 安装包
rpm -ivh 软件名

#RPM 升级包
rpm -Uvh package_file
后面接的套件即使没有安装过,则系统将予以直接安装; 若后面接的套件有安装过旧版,则系统自动更新至新版;
rpm -Fvh package_file
如果后面接的套件并未安装到您的 Linux 系统上,则该套件不会被安装;亦即只有安装至您 Linux 系统内的套件会被『升级』!

#RPM 查询包
rpm -q         #仅查询,后面接的套件名称是否有安装;
rpm -qa        #列出所有的,已经安装在本机 Linux 系统上面的所有套件名称;
rpm -qi        #列出该套件的详细信息 (information),包含开发商、版本与说明等;
rpm -ql        #列出该套件所有的档案与目录所在完整文件名 (list);
rpm -qc        #列出该套件的所有设定档 (找出在 /etc/ 底下的檔名而已)
rpm -qd        #列出该套件的所有说明档 (找出与 man 有关的档案而已)
rpm -qR        #列出与该套件有关的相依套件所含的档案 (Required 的意思)
rpm -qf        #由后面接的文件名称,找出该档案属于哪一个已安装的套件;

#RPM 验证包
rpm -V 已安装的套件名称

#RPM 卸载包
rpm -e package_file            #卸载包
rpm --rebuilddb        #重建数据库
  • yum命令

#安装
yum install         #全部安装
yum install package1         #安装指定的安装包package1
yum groupinsall group1         #安装程序组group1

#更新和升级
yum update         #全部更新
yum update package1         #更新指定程序包package1
yum check-update        #检查可更新的程序
yum upgrade package1         #升级指定程序包package1
yum groupupdate group1         #升级程序组group1

#查找和显示
yum info package1         #显示安装包信息package1
yum list         #显示所有已经安装和可以安装的程序包
yum list package1         #显示指定程序包安装情况package1
yum groupinfo group1         #显示程序组group1信息yum search string 根据关键字string查找安装包

#删除程序
yum remove package1         #删除程序包package1
yum groupremove group1         #删除程序组group1
yum deplist package1         #查看程序package1依赖情况


十一、如何使用发行版光盘作为yum repository,请描述该过程。

[root@localhost ~]# mkdir /mnt/cdrom        #创建挂载文件夹
[root@localhost ~]# mount -t iso9660 /dev/cdrom1 /mnt/cdrom        #挂载光盘
[root@localhost ~]# /etc/yum.repos.d/CentOS-DVD.repo        ##编辑yum配置文件
[dvd]
name=CentOS-$releasever - DVD
baseurl=file:///mnt/cdrom/        #DVD的挂载目录
gpgcheck=1        #进行gpg校验
enabled=0        #启用软件仓库

[root@localhost ~]# yum clean all        #清除原有的yum信息
[root@localhost ~]# yum list        #检查DVD软件列表

十二、写一个脚本,完成以下功能

  (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

  (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

  (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

  (4) 分别统计S开头和K开头的文件各有多少;

[root@localhost shell]# cat ks.sh 
#!/bin/bash
k=0
s=0
for i in `ls /etc/rc.d/rc3.d/K*`;do
        echo $i | awk -F / '{print $NF" start"}' 
        let k++
done
echo "K开头文件一共${k}个"
for i in `ls /etc/rc.d/rc3.d/S*`;do
        echo $i | awk -F / '{print $NF " stop"}'     
        let s++
done
echo "S开头文件一共${s}个"

[root@localhost shell]# /shell/ks.sh 
K50netconsole start
K开头文件一共1个
S10network stop
S开头文件一共1个


十三、写一个脚本,完成以下功能

  (1) 脚本能接受用户名作为参数;

  (2) 计算此些用户的ID之和;

[root@localhost shell]# cat sum_id2.sh 
#!/bin/bash
sum=0
if [ $# -eq 0 ];then
        echo "至少需要一个参数"
else
        for i in $@
        do
                if
                        id ${i} >/dev/null 2>&1
                then
                        id=`awk -F : '/'$i'/{print $3}' /etc/passwd`
                        let sum+=$id
                else
                        echo $i用户不存在
                fi
        done
fi
echo "$*的id之和为$sum"

[root@localhost shell]# /shell/sum_id2.sh user10 user11
user10 user11的id之和为6051


十四、写一个脚本

  (1) 传递一些目录给此脚本;

  (2) 逐个显示每个目录的所有一级文件或子目录的内容类型;

  (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

[root@localhost shell]# cat /shell/type.sh 
#!/bin/bash
sum_file=0
sum_path=0
if [ $# -eq 0 ];then
        echo "至少需要一个参数"
else
        for i in $@;do
                if [ -d $i ] ;then
                        let sum_path++
                        for file in `ls $i`;do
                                if [ -b "$i/$file" ];then
                                echo $file是一个块特殊文件;let sum_file++
                                elif [ -c "$i/$file" ];then
                                echo $file是一个字符特殊文件;let sum_file++
                                elif [ -d "$i/$file" ];then
                                echo $file是一个目录;let sum_file++
                                elif [ -f "$i/$file" ];then
                                echo $file是一个普通文件;let sum_file++
                                elif [ -p "$i/$file" ];then
                                echo $file是一个一个命名管道;let sum_file++
                                elif [ -s "$i/$file" ];then
                                echo $file是一个套接字特殊文件 ;let sum_file++
                                fi
                        done
                else
                        echo "$i路径不正确"
                fi
        done
fi

echo "一共统计了$sum_path个目录下$sum_file个文件"
[root@localhost shell]# /shell/type.sh /root /etc/rc.d/
!是一个普通文件
1是一个普通文件
anaconda-ks.cfg是一个普通文件
init.d是一个目录
rc0.d是一个目录
rc1.d是一个目录
rc2.d是一个目录
rc3.d是一个目录
rc4.d是一个目录
rc5.d是一个目录
rc6.d是一个目录
rc.local是一个普通文件
rc.sysinit是一个普通文件
一共统计了2个目录下13个文件


十五、写一个脚本

 通过命令行传递一个参数给脚本,参数为用户名

 如果用户的id号大于等于500,则显示此用户为普通用户;

[root@localhost shell]# cat /shell/uid.sh 
#!/bin/bash
if [ $# -eq 0 ];then
        echo "至少需要一个参数"
else
        for i in $@
        do
                if
                        id ${i} >/dev/null 2>&1
                then
                        if [ `id -u $i` -ge 500 ];then
                                echo "$i为普通用户"
                        else
                                echo "$i为系统用户"
                        fi
                else
                        echo $i用户不存在
                fi
        done
fi

[root@localhost shell]# /shell/uid.sh root user10
root为系统用户
user10为普通用户


十六、写一个脚本

  (1) 添加10用户user1-user10;密码同用户名;

  (2) 用户不存在时才添加;存在时则跳过;

  (3) 最后显示本次共添加了多少用户;

#!/bin/bash
sum=0
        for i in {1..10}
        do
                        if
                                id user${i} >/dev/null 2>&1
                        then
                                echo "user${i}已存在"
                        else
                                useradd user${i}
                                echo user${i} | passwd --stdin user${i} >/dev/null 2>&1 && echo "user${i}创建成功"&&((sum=sum+1))
                        fi
        done
        echo "总共创建了${sum}个用户"
        
[root@localhost shell]# /shell/useradd2.sh 
user1创建成功
user2创建成功
user3创建成功
user4创建成功
user5创建成功
user6创建成功
user7创建成功
user8创建成功
user9创建成功
user10创建成功
总共创建了10个用户


十七、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

[root@localhost shell]# cat /shell/ping.sh            #改个网段方便测试
#!/bin/bash/
ip=10.18.11.
for i in `seq 20 100`;do
        if `ping -w 1 -c 1 ${ip}${i} >/dev/null 2>&1` ;then
                echo "${ip}${i} is up"
        fi
done

[root@localhost shell]# /shell/ping.sh 
10.18.11.29 is up
10.18.11.36 is up
10.18.11.37 is up
10.18.11.48 is up
10.18.11.49 is up
10.18.11.50 is up
10.18.11.51 is up
10.18.11.52 is up
10.18.11.53 is up
10.18.11.54 is up
10.18.11.55 is up
10.18.11.56 is up
10.18.11.57 is up
10.18.11.58 is up
10.18.11.60 is up
10.18.11.62 is up
10.18.11.65 is up
10.18.11.66 is up
10.18.11.67 is up
10.18.11.68 is up
10.18.11.69 is up
10.18.11.70 is up
10.18.11.71 is up
10.18.11.72 is up
10.18.11.86 is up
10.18.11.87 is up


十八、打印九九乘法表;

[root@localhost shell]# cat 9x9.sh 
#!/bin/bash
for ((i=1;i<=9;i++));do
        for ((j=1;j<=i;j++));do
                echo -ne "$i*$j=$(($i*$j))   "
        done
        echo -e "\n"
done

[root@localhost shell]# ./9x9.sh 
1*1=1   

2*1=2   2*2=4   

3*1=3   3*2=6   3*3=9   

4*1=4   4*2=8   4*3=12   4*4=16   

5*1=5   5*2=10   5*3=15   5*4=20   5*5=25   

6*1=6   6*2=12   6*3=18   6*4=24   6*5=30   6*6=36   

7*1=7   7*2=14   7*3=21   7*4=28   7*5=35   7*6=42   7*7=49   

8*1=8   8*2=16   8*3=24   8*4=32   8*5=40   8*6=48   8*7=56   8*8=64   

9*1=9   9*2=18   9*3=27   9*4=36   9*5=45   9*6=54   9*7=63   9*8=72   9*9=81