練習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