练习1 写一个脚本
经过ping 命令测试192.168.0.151 到192.168.0.254 以前的全部主机是否在线。 若是在线,就显示"ip is up.",其中的IP要换为真正的IP地址,且以绿色显示;若是不在线,就显示“ip is down。”,其中的IP更换为真正的IP地址,且以红色显示;
要求: 分别使用while,until和for循环实现。while 语句循环
[root@localhost mscripts]# cat lx31*
#!/bin/bash
STRING="172.16.99."
declare -i I=0
while [ $I -le 19 ]; do
let I+=1
ping -i 1 -c 1 $STRING$I &> /dev/null
RTU=$?
if [ $RTU -eq 0 ]; then
echo "$STRING$I is up."
else
echo "$STRING$I is down."
fi
done//until 语句循环
#!/bin/bash
STRING="172.16.99."
declare -i I=0
until [ $I -gt 19 ]; do
let I+=1
ping -i 1 -c 1 $STRING$I &> /dev/null
RTU=$?
if [ $RTU -eq 0 ]; then
echo "$STRING$I is up."
else
echo "$STRING$I is down."
fi
done
` // for 语句循环``
#!/bin/bash
STRING="172.16.99."
for I in {1..20}; do
ping -i 1 -c 1 $STRING$I &> /dev/null
RTU=$?
if [ $RTU -eq 0 ]; then
echo "$STRING$I is up."
else
echo "$STRING$I is down."
fi
done
练习2 写一个脚本(前提:为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘建立分区;
1, 列出当前系统上全部的磁盘,让用户选择,若是选择q则退出脚本;若是用户选择错误,就让用户从新选择;
2, 当用户选择后,提醒用户确认接下来的操做可能会损坏数据,并请用户确认;若是用户选择y就继续,n 退出;不然,让用户从新选择;
三、 抹除那块硬盘上的全部分区(提示,mo除全部分区后执行sync命令),并让脚本睡眠2秒后再分区;并为其建立三个主分区,第一个为20M,第二个为512M,第三个为128M,且第三个为swap分区类型;(提示 将分区命令经过echo 传递给fdisk 便可实现)。bash
cat lx32.sh
#!/bin/bash
echo "Format a disk."
echo -e "\033[31mWarning! Attention please.\033[0m"
fdisk -l 2> /dev/null | grep -o "Disk /dev/[sh]d[a-z]"
read -p "Please input your choice:" CDISK
if [ $CDISK = 'quit' ]; then
echo "quit..."
exit 7
fi
until fdisk -l 2> /dev/null | grep -o "Disk /dev/[sh]d[a-z]" | grep "Disk $CDISK" &> /dev/null; do
read -p "Wrong option! Please again input your choice:" CDISK
done
read -p "Will destory your disk, continue ?:" CHOICE
until [ $CHOICE = 'y' -o $CHOICE = 'n' ]; do
read -p "Will destory your disk, continue ?:" CHOICE
done
if [ $CHOICE = 'n' ]; then
echo "quit.."
exit 9
else
dd if=/dev/zero of=$CDISK bc=512 count=1
sync
sleep 3
echo 'n
p
1ide
+20M
n
p
2测试
+512M
n
p
3ui
+128M
t
3
82
w' | fdisk $CDISK &> /dev/null
partprobe $CDISK
mke2fs -j ${CDISK}1
mke2fs -j ${CDISK}2
mkswap ${CDISK}3
ficode