1.写一个脚本,通过ping命令测试192.168.204.1到192.168.204.20之间的所有主机是否在线。如果在线,就显示“ip is up.”,其中的ip要换为真正的IP地址,且以绿色显示;反之,就以红色显示“ip is down”。要求,分别使用for,while,until来实现。

#!/bin/bashecho "for-------------"#forfor((i=1;i<=20;i++)) ; do  if ping -c 1 -W 1 "192.168.204.$i" &> /dev/null ; then      echo -e "\033[32m192.168.204.$i is up\033[0m"  else     echo -e "\033[31m192.168.204.$i is down\033[0m"  fidoneecho "while-----------"#whiledeclare -i start=1while [ $start -le 20 ]; do  if ping -c 1 -W 1 "192.168.204.$start" &> /dev/null ; then      echo -e "\033[32m192.168.204.$start is up\033[0m"  else     echo -e "\033[31m192.168.204.$start is down\033[0m"  fi  let start++doneecho "until-----------"#untilstart=1until [ $start -gt 20 ]; do  if ping -c 1 -W 1 "192.168.204.$start" &> /dev/null ; then      echo -e "\033[32m192.168.204.$start is up\033[0m"  else     echo -e "\033[31m192.168.204.$start is down\033[0m"  fi  let start++done

运行后,结果如下:

2.写一个脚本,为指定的硬盘创建分区【假设系统刚添加一块新硬盘/dev/sdc】:

A.列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,让用户重新选择;

B.当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,否则,让用户退出;

C.抹除那块硬盘上的所有分区;并为其创建三个主分区,第一个为20M,第二个为30M,第三个为40M,且第三个分区为SWAP类型;

下面只分享下我的思路:

列出当前系统上所有的磁盘信息:

[root@localhost ~]# fdisk -l  | grep "Disk" | cut -d: -f1 | cut -d" " -f2

/dev/sda

/dev/sdb

/dev/sdc

在以前我们创建分区,都是通过fdisk打开一个交互式的界面,输入命令来完成的,那么通过脚本来完成磁盘分区,如何做呢?

通过echo将命令输出给fdisk即可,就这么简单。

[root@localhost ~]# fdisk -l /dev/sdc

Disk /dev/sdc: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1               1         244     1959898+  83  Linux

[root@localhost ~]# echo -e "d\n1\nw" | fdisk /dev/sdc

[root@localhost ~]# fdisk -l /dev/sdc

Disk /dev/sdc: 3221 MB, 3221225472 bytes

255 heads, 63 sectors/track, 391 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

如何抹除硬盘上的分区,笨办法的话,我们可以一个个d来实现;其实可以有一种更加快的方式,还记得dd命令吗?

 dd if=/dev/zero of=/dev/sdc bs=512 count=1

利用泡泡设备将/dev/sdc这块硬盘的512字节起始区域填充为0,说白了就是在弄坏这块硬盘上的MBR,这样即使这块硬盘上有数据,也无法访问了,也就变相的达到了删除分区的目的。但是需要注意的是,这个操作太快了,需要将内存中的操作同步至磁盘上,可以使用sync(flush file system buffers)手动完成同步,然后让脚本sleep 3秒钟,防止操作过快,磁盘无法识别命令。