shell<二>

1.你希望从服务器上下载一个软件,你的机器有两块网卡eth0和eth1,地址配置如下:

  Eth0:      192.168.6.25/24

  Eth1:      172.16.101.25/24

  默认网关:  192.168.6.1/24

  服务器地址:211.138.18.30

 此时,发现你的机器有两个路由条目:

Destination     Gateway         Genmask         Flags  MSS Window  irtt  Iface

211.138.0.0       *            255.255.0.0       U         0 0        0  eth0

211.138.16.0      *             255.255.240.0     U        0 0        0   eth1

请问:你的机器去服务器下载软件,会如何选路,为什么?


解答:依据最小化原则选择eth1。可以精确匹配就精确匹配,不能精确匹配局走大段

详细描述

一台机器有两块网卡eth0和eth1,要访问211.138.18.30服务器,根据最小化原则会先匹配最小网段,如果最小网段不匹配,再匹配最大网段。

由题可知211.138.16.0做了子网划分,用ipcalc工具可以分析:

wget     #或者自己从网上下载一个ipcalc工具 
chmod +x ipcalc 
./ipcalc 211.138.16.0 255.255.240.0
Address:   211.138.16.0         11010011.10001010.0001 0000.00000000
Netmask:   255.255.240.0 = 20   11111111.11111111.1111 0000.00000000
Wildcard:  0.0.15.255           00000000.00000000.0000 1111.11111111
=>
Network:   211.138.16.0/20      11010011.10001010.0001 0000.00000000
HostMin:   211.138.16.1         11010011.10001010.0001 0000.00000001
HostMax:   211.138.31.254       11010011.10001010.0001 1111.11111110
Broadcast: 211.138.31.255       11010011.10001010.0001 1111.11111111
Hosts/Net: 4094                  Class C

备注:网段是211.138.16.0/20,最小网段是从211.138.16.1到211.138.31.254,可以匹配到服务器地址211.138.18.30,所以机器去服务器下载软件会选择eth1

2.请用shell或perl编写一个画直角梯形程序(a.sh),接收用户输入的参数n,m

例如:a.sh 4 6

* * * *

* * * * *

* * * * * *

解答:

脚本一:

[[email protected] 2015-12-01]# sh a.sh

****

*****

******

[[email protected] 2015-12-01]# cat a.sh 
#/bin/sh
for i in `seq 4 6`
do 
  for j in `seq $i`
    do
echo -n ‘*‘
    done
    echo
done

脚本二:

[[email protected] 2015-12-01]# sh t.sh 4 6

* * * *

* * * * *

* * * * * *

[[email protected] 2015-12-01]# cat t.sh 
#!/bin/bash
if [ $# -ne 2 ];then
echo "error!!!"
exit
fi
if [ $1 -gt $2 ];then
i=$2
j=$1
else
i=$1
j=$2
fi
for m in `seq $i $j`;do
str=‘‘
for i in `seq 1 $m`;do
str="$str\t*"
done
echo $str | sed  ‘s/\\t/ /g‘
done

脚本三:

[[email protected] 2015-12-01]# sh h.sh 4 6

* * * *

* * * * *

* * * * * *

[[email protected] 2015-12-01]# cat h.sh 
#!/bin/bash
if [ $# -ne 2 ];then
echo "error!!!"
exit
fi
if [ $1 -gt $2 ];then
i=$2
j=$1
else
i=$1
j=$2
fi
for m in `seq $i $j`;do
str=‘‘
for i in `seq 1 $m`;do
str="$str\t*"
done
echo $str | sed  ‘s/\\t/ /g‘
done

附:

[[email protected]8ctZ 2015-12-01]# seq 3

1

2

3

[[email protected] 2015-12-01]# for i in $(seq 3);do echo $(seq 3);done

1 2 3

1 2 3

1 2 3

输出10行,每行3个数字

[[email protected] 2015-12-01]# for i in $(seq 10);do echo $(seq 3);done

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

1 2 3

输出10行,每行10个数字

[[email protected] 2015-12-01]# for i in $(seq 10);do echo $(seq 10);done

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

[[email protected] 2015-12-01]# tstr=""; for (( i = 0; i < 10; i++)); do echo "$tstr*"; tstr="$tstr*"; done

*

**

***

****

*****

******

*******

********

*********

**********

脚本输出直角梯形:

#/bin/sh
for i in `seq 3 5`
do
  forj in `seq $i`
   do
       echo-n ‘*‘
   done
   echo
done

接收用户输入的参数:

#/bin/sh
while true
do
 echo -n "pls enter the number:" $1 $2
 read line
 sleep 1
 echo "$line"
done

顺便分享一下我扒来的shell学习方法:

http://www.chinaunix.net/old_jh/24/312462.html

shell综合水平测试题:

http://bbs.chinaunix.net/thread-476260-1-1.html

http://oldboy.blog.51cto.com/2561410/1718607

刀不磨要生锈。

时间: 2024-12-16 19:42:34

shell<二>的相关文章

【Linux系列】【基础版】第四章 Shell基础之正则表达式

4. Shell基础之正则表达式     4.1 正则就是一串有规律的字符串         4.1 grep              4.1.1 格式: grep [-cinrvABC] 'word' filename             4.1.2 -c //count,表示行数             4.1.3 -i //不区分大小写             4.1.4 -n  //显示行号             4.1.5 -r  //遍历所有子目录             4

linux Shell函数

Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 1 2 3 4 function 函数名() {     语句     [return] } 关键字function表示定义一个函数,可以省略,其后是函数名,有时函数名后可以跟一个括号,符号"{"表示函数执行命令的入口,该符号也可以在函数名那一行,"}"表示函数体的结

Shell实现跳板机,为什么用跳板机

整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,使用了,我还没找到改回去的方法. 1.     问题 第一.很多大公司的服务器都不允许直接登录,而是通过一个跳板机才能登录过去.在跳板机中,通常只能执行几个少数命令(如SSH),而其他命令是不允许执行的,那么怎样才能实现这个功能呢? 第二.一些小公司,由于服务器比较少,不需要什么跳板机之类的说法,公司的开发运维人员加起来也就那么十几二十人,通常大家都

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

shell中test命令方法详解

test命令用法.功能:检查文件和比较值 1)判断表达式 if test  (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2                  两个表达式都为真 test 表达式1 –o 表达式2                 两个表达式有一个为真 2)判断字符串 test –n 字符串                                   字符串的长度非零 test –z 字符串                          

shell脚本

-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]-x filename 如果 filename可执行,则为真 [ -L /usr/bin/gr

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中

shell之数组的使用

数组 Array 一段连续的内存空间 1) 定义数组 [[email protected] shell]# aa[0]=martin [[email protected] shell]# aa[1]=jerry [[email protected] shell]# aa[2]=mike [[email protected] shell]# aa[10]=alice [[email protected] shell]# bb=(192.168.1.1 192.168.1.2 192.168.1.3