Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78958
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 434
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-23 09:31
个人简介

天行健,君子以自强不息;地势坤,君子以厚德载物

文章分类
文章存档

2018年(11)

2017年(30)

我的朋友

分类: LINUX

2017-07-03 20:53:46

脚本完成磁盘分区格式化

脚本编程控制结构:
    顺序
    选择:
        if
        case
    循环:
        for:
            for 变量 in 列表;do
                循环体
            done
            例:写一个求和脚本SUM.sh,从1加到100:
            #!/bin/bash
            #
            declare SUM=0
            for I in {1..100}; do
                let SUM+=I;
            done
            echo $SUM

            
            for (( expr1; expr2; expr3 )); do
                循环体
            done
            例:写一个求和脚本SUM.sh,从1加到100偶数和:
            #!/bin/bash
            #
            declare -i SUM=0
            for ((I=2;I<=100;I+=2)) ; do
                let SUM+=I;
            done
            echo $SUM

            
        while:
            while CONDITION; do
                statment
            done
            进入循环:条件满足
            退出循环:条件不满足
            例1:编写一个while.sh脚本:
            #!/bin/bash
            #
            read -p "Input something: " STRING

            while [ $STRING != 'quit' ]; do
                echo $STRING | tr 'a-z' 'A-Z'
                read -p "Again,Input someting: " STRING
            done
            
            例2:编写一个while.sh脚本:
            #!/bin/bash
            #

            while ! who | grep "hadoop" &> /dev/null; do
                echo "hadoop is not come."
                sleep 5
            done

            echo "hadoop is logged in."

            
        until:
            until CONDITION; do
                statment
                ....
            done
            进入循环:条件不满足
            退出循环:条件满足
            例1:编写一个untile.sh脚本:
            #!/bin/bash
            #
            read -p "Input someting: " STRING

            until [ $STRING == 'quit' ]; do
                echo $STRING | tr 'a-z' 'A-Z'
                read -p  "Again Inputsometing: " STRING
            done
            例2:编写一个hadoop.sh脚本:
            #!/bin/bash
            #

            until who | grep "hadoop" &> /dev/null; do
                echo "hadoop is not come."
                sleep 5
            done

            echo "hadoop is logged in."
课后练习:
    写一个脚本:
        1、通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线,
            如果在线,就显示“ip is up.”,其中的IP要换为真正的IP地址,且以绿色显示;
            如果不在线,就显示“ip is down.”,其中的IP要换为真正的IP地址,且以红色显示;
            要求:分别使用while,until和for(两种方式)循环实现。
            提示:ping:
                    -c #:指定ping次数;
                    -w #:指定ping间隔时长(以秒为单位);
awk:
    awk 'PATTERN{ACTION}' file
        PATTERN:处理内容的行
        ACTION:处理动作
            print $#:指定显示每行第#个字段
            print $0:显示每行的所有字段
            print $NF:显示每行的最后一个字段
            例1:[root@localhost ~]# df -lh | awk '{print $1,$3}'
                文件系统 已用
                /dev/sda2 2.1G
                /dev/sda3 36M
                /dev/sda1 17M
                tmpfs 0
                /dev/sda7 19M
                /dev/mapper/myvg-testlv
                1008M 924M
            例2:[root@localhost ~]# awk -F: '{print $1,$3}' /etc/passwd  #“-F:” 表示分割符为“:”#
                root 0
                bin 1
                daemon 2

写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/adb),为指定的硬盘创建分区:
1、列出当前系统上所有的磁盘,让用户选择,如果选择quit则退出脚本;如果用户选择错误,就让用户重新选择;
2、当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,否则让用户重新选择;
3、抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区);并为其创建三个主分区,第一个为20M,第二个为
512M,第三个为128M,且第三个为swap分区类型;(提示:将分区命令通过echo传送给fdisk即可实现)
fdisk -l | grep        

dd if=/dev/zero of=/dev/sdb bs=512 count=1    #抹除硬盘上所有分区#        
sync
sleep 3
[root@localhost ~]# fdisk -l 2> /dev/null | grep "Disk /dev/[sh]d[a-z]" | awk -F: '{print $1}' #显示系统所有盘区#

子例1:脚本setpart.sh实现在hda盘区创建三个主分区,第一个为20M,第二个为512M,第三个为128M,且第三个为swap分区类型;
#!/bin/bash
#
echo '
n
p
1

+20M
n
p
2

+512M
n
p
3

+128M
t
3
82
w' | fdisk /dev/hda
子例2:抹除hda硬盘上所有分区:
[root@localhost ~]# dd if=/dev/zero of=/dev/hda bs=512 count=1
[root@localhost ~]# sync      #系统同步#
[root@localhost ~]# partprobe  #内核重读#
[root@localhost ~]# fdisk -l /dev/hda
阅读(1049) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~