天天看點

腳本完成分區格式化

腳本控制結構:

    順序

    選擇:if、case

    循環:while、until、for

        while  CONDITION; do

            statement;

            ...

        done

        滿足條件循環,不滿足則退出

        until    CONDITION ; do

            statement;

        不滿足條件循環,滿足則退出

        for ((expr1;expr2;expr3));do list; done

        for  變量 in  清單;  

        do 

             表達式 ;

寫一個腳本:

1.通過ping指令測試192.168.0.151到192.168.0.254之間的所有主機是否線上

    如果線上,就顯示“ip is up”,其中的ip要換為真正的ip,并用綠色表示

    如果不線上,就顯示“ip is down”,其中的ip要換為真正的ip,并用紅色表示

    要求:分别使用while、until和for實作。

#!/bin/bash

i=151

 while [ $i -le 254 ] ;do

ping -c1 -w1 192.168.0.$i &>/dev/null && echo -e "\033[40;32m192.168.0.$i is up\033[0m"||echo -e "\033[40;31m192.168.1.$i is down\033[0m"

i=$[$i+1]

done

 until [ $i -gt 254 ] ;do

for i  in  {151..254}; do

awk用法簡介:

    awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對資料分析并生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符将每行切片,切開的部分再進行各種分析處理。

格式:awk 'PATTERN{ACTION}' file

    $1:表示第一片,同理$2表示第二片...

    NF:表示awk總共把這行分成了多少片,$NF則表示最後一片

[root@logstash magelearning]# df  -h|awk  '{print $2}'

Size

20G

234M

190M

[root@logstash magelearning]# df  -h|awk  /dev/'{print $2}'

[root@logstash magelearning]# df  -h|awk  /sda'{print $2}'

awk: /sda{print $2}

awk:  ^ unterminated regexp

[root@logstash magelearning]# df  -h|awk  /sda/'{print $2}'

[root@logstash magelearning]# df  -h|awk  '/sda/{print $2}'

[root@logstash magelearning]# df  -h|awk  '/sda/{print $2,$3}'

20G 4.0G

190M 41M

[root@logstash magelearning]# df  -h|awk  '/sda/{print $0,$2,$3}'

/dev/sda2        20G  4.0G   15G  22% / 20G 4.0G

/dev/sda1       190M   41M  140M  23% /boot 190M 41M

[root@logstash magelearning]# df  -h|awk  '/sda/{print $0}'

/dev/sda2        20G  4.0G   15G  22% /

/dev/sda1       190M   41M  140M  23% /boot

[root@logstash magelearning]# df  -h|awk  '/sda/{print NF}'

6

[root@logstash magelearning]# df  -h|awk  '/sda/{print $NF}'

/

/boot

[root@logstash magelearning]# df  -h|awk  '/sda/'

寫一個腳本(前提:請為虛拟機新增一塊硬碟,假設它為/dev/sdb),為指定的硬碟建立分區:

列出目前系統上所有的磁盤,讓使用者選擇,如果選擇q則退出腳本,如果使用者選擇錯誤,則讓使用者重新選擇

當使用者選擇後,提醒使用者确認接下來的操作可能會損壞資料,并請使用者确認,如果使用者選擇y就繼續,否則,讓使用者重新選擇:

抹除那塊硬碟上的所有分區(提示,抹除所有分區後執行sync指令,并讓腳本睡眠3s後再分區;并為其建立三個主分區,第一個為20M,第二個為512M,第三個為128M,且第三個為swap分區類型;(提示将分區指令,echo給fdisk 即可實作)

while : ; do 

list=`fdisk -l|grep '^Disk /dev/[sh]d[ab]'|awk '{print $2}'|awk -F : '{print $1}'`

until fdisk -l|grep '^Disk /dev/[sh]d[ab]'|awk '{print $2}'|awk -F : '{print $1}'|grep "^$DISK$"; do 

echo  "please choice a disk:  

$list

[q|Q] quit.."

read -p "your  choice :" DISK

if [ $DISK == 'q' ] || [  $DISK == 'Q' ];then

echo "quiting..."

exit 0

fi

echo $DISK

echo  -e  "\033[40;31mit will destroy all data,Are you want  to  continue? [Y/N]\033[0m" 

read CHOICE

if [ $CHOICE == 'Y' ] || [ $CHOICE == 'y' ];then

dd if=/dev/zero of=$DISK bs=512 count=1

sync

sleep 3

echo "n

p

1

+20M

n

2

+512M

3

+128M

t

82

w

"|fdisk  $DISK

DISK=''

本文轉自biao007h51CTO部落格,原文連結:http://blog.51cto.com/linzb/1752110 ,如需轉載請自行聯系原作者