歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux基本命令練習:腳本實現硬盤分區功能

Linux基本命令練習:腳本實現硬盤分區功能

日期:2017/2/28 13:47:22   编辑:Linux教程

練習一
1、通過ping命令測試10.109.134.233到10.109.134.249之間的所有主機是否在線;
如果在線,就顯示“ip is up ” 其中的IP要換成真正的IP地址,且以綠色顯示;
如果不在線,就顯示“ip is down”其中的IP要換成真正的IP地址,且以紅色顯示;
要求:分別使用whil,until和for(兩種形式)循環實現。


for第一種形式
#!/bin/bash
# program:
# 測試ip地址是否在線
# history donggen 2016-11-08-15:55
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
export PATH

for ((i=233;i<249;i++));do
ping -c 1 -W 1 10.109.134.$i
P=$?
[ $P -eq 0 ] && echo "\033[32m10.109.134.$i\033[0m is up" || echo -e "\033[31m 10.109.134.$i \033[0m is down"
done
for第二種形式
#!/bin/bash
# program:
# 測試ip地址是否在線
# history donggen 2016-11-08-15:55
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
export PATH

for I in {233..249}; do
ping -c 1 -W 1 10.109.134.$I &> /dev/null
RESULT=$?
[ $RESULT -eq 0 ] && echo -e"\033[32m 10.109.134.$I is up\033[0m" || echo -e"\033[31m 10.109.134.$I is down\033[0m"
done


until循環
#!/bin/bash

# program:
# 練習使用until循環進行ping命令
#history donggen 2016-11-08-17:30
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
export PATH
declare -i i=232


until [ $i -ge 249 ] ; do
let i+=1
ping -c 1 -W 1 10.109.134.$i &> /dev/null
RESULT=$?
[ $RESULT -eq 0 ] && echo -e "\033[32m10.109.134.$i is up.\033[0m" || echo -e "\033[31m10.109.134.$i is down.\033[0m"
done

while循環
#!/bin/bash
#program:
#練習使用while循環
#history donggen 2016-11-09-08:45
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
export PATH
declare -i i=232


while [ $i -ge 232 -a $i -le 249 ]; do
let i++
ping -c 1 -W 1 10.109.134.$i &> /dev/null
RESULT=$?
[ $RESULT -eq 0 ] && echo -e "\033[32m10.109.134.$i is up.\033[0m" || echo -e "\033[31m10.109.134.$i is down.\033[0m"
done

練習二
2、寫一個腳本(前提:請為虛擬機新增一塊硬盤,假設它為/dv/sdb),為指定的硬盤創建分區;
1、列出當前系統上所有的磁盤,讓用戶選擇,如果選擇quit則退出腳本;如果用戶選擇錯誤,就讓用戶重新選擇;
2、當用戶選擇後,提醒用戶確認接下來的操作可能會損壞數據,並請用戶確認;如果用戶選擇y就繼續,否則讓用戶重新選擇;
3、抹除那塊硬盤上的所有分區(提示,抹除所有分區後執行sync命令,並讓腳本睡眠3秒
鐘後再分區);並為其創建三個主分區,第一個為20M,第二個為512M,第三個未128M,且第三個為swap分區類型;(提示:將分區命令通過echo傳送給fdisk即可實現)


#!/bin/bash
# program:
# 練習腳本分區
# history donggen 2016-11-09-9:10
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
export PATH

fdisk -l 2> /dev/null | grep "^Disk /dev/[sh]d[a-z]" | awk -F: '{print $1}'
read -p "Input your choice: " CHOICE

if [ $CHOICE = 'quit' ]; then
echo "choice is quiting.."
exit 6
fi

until fdisk -l 2> /dev/null | grep -o "Disk /dev/[sh]d[a-z]" | grep "^Disk $CHOICE" &> /dev/null; do
read -p "Input your choice again: " CHOICE
done

read -p "Please Continue y|n:" RESULT

until [ $RESULT == "y" -o $RESULT == "n" ]; do
read -p "Please Continue again y|n:" RESULT
done

if [ $RESULT == "n" ]; then
echo "Quiting..."
exit 7
elif [ $RESULT == "y" ]; then
dd if=/dev/zero of=$CHOICE bs=512 count=1
sync
sleep 3

echo 'n
p
1

+20M
n
p
2

+512M
n
p
3

+128M
t
3
82
w'| fdisk $CHOICE &> /dev/null
partprobe $CHOICE
sync
sleep 3
mke2fs ${CHOICE}1 &> /dev/null
mke2fs ${CHOICE}2 &> /dev/null
mkswap ${CHOICE}3 &> /dev/null
echo "$CHOICE is fdisk ok"
fi

Copyright © Linux教程網 All Rights Reserved