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秒钟,防止操作过快,磁盘无法识别命令。 |