sh6.脚本磁盘分区格式化
练习1.
写一个脚本,通过ping 命令测试192.168.0.100到192.168.0.254之间的所有主机是否在线,
如果在线,就显示“ip is up.”IP为真实IP地址,且以绿色显示;
如果不在线,就显示“IP is down." ,以红色显示
要求:分别使用while, until 和for循环实现。
.for循环
#/bin/bash
#
for i in {..};do
if ping 192.168..$i -c1 -w1 > /dev/null;then
echo -e "\033[32m192.168.3.$i IP is up\033[0m"
else
echo -e "\033[31m192.168.3.$i IP is down!\033[0m"
fi
done .while 循环
#/bin/bash
#
i=
while [ $i -le ];do
if ping -c1 -w1 192.168..$i &> /dev/null;then
echo -e "\033[32m192.168.3.$i IP is up.\033[0m"
else
echo -e "\033[31m192.168.3.$i IP is down.\033[0m"
fi
((i++))
done 注:ping -c1 一次
-w1 延迟一秒 颜色:
echo -e "\033[35mHello\033[0m,world."
练习2.
写一个脚本(前提:请为虚拟机新增一块硬盘,假设它为/dev/sdb),为指定的硬盘创建分区:
1.列出当前系统上所有的磁盘,让用户选择,如选择quit 则退出脚本:如果用户选择错误,就让用户重新选择;
2.当用户选择后,提醒用户确认接下来的操作可能会损坏数据,并请用户确认;如果用户选择y就继续,否则,让用户重新选择;
3.抹除那块硬盘上的所有分区(提示,抹除所有分区后执行sync命令,并让脚本睡眠3秒钟后再分区):并为其创建三个主分区,第一个为20M,第二个为512M,第三个为123M,且第三个为swap分区类型;(将分区命令通过echo传送给fdisk即可实现)
脚本分析: .删除分区: dd if=/dev/zero of=/dev/hda bs= count= dd 用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换 if= :输入文件名 of=: 输出文件名 bs : 指定读入/输出的块大小,字节 count:#块个数 用空字节覆盖MAR引导,既删除分区整个硬盘分区 将U盘当前状态保存下来成为一个文件。
dd if=/dev/sdb of=/backup/ISO/Upan/save.iso cat /dev/cdrom > xx.iso mkisofs -r -o xx.iso /dev/cdrom .取出硬盘列表: fdisk -l > /dev/null |grep "Disk /dev/[sh]d[a-z]" | awk -F: '{print $1}' .脚本创建分区 echo 'n n p +20M w' | fdisk /dev/hda [root@localhost test]# cat disk.sh
#!/bin/bash
#
echo "Initial a disk..."
echo -e "\033[31mWarning:\033[0m"
fdisk -l > /dev/null |grep -o "^Disk /dev/[sh]d[a-z]" read -p "Your choice:" PARTDISK if [ $PARTDISK == 'quit' ];then
echo "quit"
exit
fi until fdisk -l > /dev/null | grep -o "^Disk /dev/[sh]d[a-z]" | grep "^Disk $PARTDISK$" &> /dev/null;do
read -p "Wrong option,Yourchoice aging:" PARTDISK
done read -p "Will destroy all data, continue:y|n? " CHOICE until [ $CHOICE == 'y' -o $CHOICE == 'n' ];do
read -p "Will destroy all data,continue:y|n? " CHOICE
done
if [ $CHOICE == 'n' ];then
echo "quit"
exit
else
dd if=/dev/zero of=$PARTDISK bs= count=
sync
sleep
echo 'n
p +20M
n
p +512M
n
p +128M
t w' | fdisk $PARTDISK &> /dev/null partprobe $PARTDISK
sync
sleep
mkfs.ext4 ${PARTDISK}
mkfs.ext4 ${PARTDISK}
mkswap ${PARTDISK}
fi 扩展:删除分区先检测是否已挂载 #!/bin/bash
#
for I in `mount | grep "/dev/sdb" | awk '{print $1}'`;do
fuser -km $I #fuser -km /dev/sda1 #杀死所有使用sda1的进程
umount $I
echo "$I umonut OK."
done
脚本分析:
1.删除分区: dd if=/dev/zero of=/dev/hda bs=512 count=1
dd 用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
if= :输入文件名
of=: 输出文件名
bs : 指定读入/输出的块大小,字节
count:#块个数
用空字节覆盖MAR引导,既删除分区整个硬盘分区
将U盘当前状态保存下来成为一个文件。
dd if=/dev/sdb of=/backup/ISO/Upan/save.iso
cat /dev/cdrom > xx.iso
mkisofs -r -o xx.iso /dev/cdrom
2.取出硬盘列表:
fdisk -l 2> /dev/null |grep "Disk /dev/[sh]d[a-z]" | awk -F: '{print $1}'
3.脚本创建分区
echo 'n
n
p
1
+20M
sh6.脚本磁盘分区格式化的更多相关文章
- linux增加硬盘 磁盘分区格式化及挂载
nux磁盘分区格式化及挂载 意义: 给linux 系统服务器扩容, 加一块硬盘 实验环境: virtualBox虚拟软件 + centos6.5 第一步: 添加硬件 硬盘 (我这里用virtualB ...
- (转)centos7.4 fdisk磁盘分区 格式化 挂载
centos7.4 fdisk磁盘分区 格式化 挂载 原文:http://blog.csdn.net/capecape/article/details/78499351 1.查看系统中有多少可以识别的 ...
- 【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
磁盘分区完成后,一般就需要对分区进行格式化 磁盘分区命令主要有两个: fdisk :最大支持不超过2T分区: parted :支持GPT,适用于大容量分区: 分区指令的选择: 在RHEL系统上,用fd ...
- Linux系统添加硬盘设备(磁盘分区-格式化-挂载-使用)
当全新安装了一块新的硬盘设备后,为了更充分.更安全的利用硬盘空间首先要进行磁盘的分区, 然后格式化,最后挂载使用. 实例:对新添加的硬盘设备进行分区.格式化并挂载到/newFS目录. 第一步:在vmw ...
- Linux磁盘分区/格式化/挂载(树莓派3挂载硬盘)
[前言] 本文将要讲解的功能为Linux环境下对磁盘进行操作.包括分区.格式化.挂载外接移动存储设备等. 该文的写作背景为本人的树莓派需要外接一个固态硬盘作为存储设备,因此,便开始了一系列的折腾. [ ...
- linux磁盘分区格式化-fdisk命令工具
本文主要讲述使用fdisk工具对磁盘进行分区和格式化的方法 首先要明确分区是针对磁盘进行的操做,磁盘分区会创建分区表,类似vda,sda的是磁盘,vda1,sda1的是分区 1.查看磁盘分区状态 1. ...
- Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接
作业一:1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt2) 将用户信息数据库文件和用户 ...
- Linux磁盘分区/格式化/挂载目录
分区及挂载目录 以CentOS7.2为例,一般我们服务端应用部署前需要确认部署机的磁盘空间及挂载目录.操作如下: 如上图,如果操作系统是新装的,未挂盘的话需要先挂载盘.操作如下: fdisk -l # ...
- Linux磁盘分区格式化和扩容
Note:根据各系统上磁盘的类型不同,磁盘命名规则也会不同:例如/dev/xvd,/dev/sd,/dev/vd,/dev/hd 目录 磁盘格式化 MBR格式 GPT分区 磁盘扩容 MBR格式扩容 G ...
随机推荐
- 聊聊 Apache 开源协议
摘要 用一句话概括 Apache License 就是,你可以用这代码,但是如果开源你必须保留我写的声明:你可以改我的代码,但是如果开源你必须写清楚你改了哪些:你可以加新的协议要求,但不能与我所 公布 ...
- [POJ&HDU]杂题记录
POJ2152 树形dp,每次先dfs一遍求出距离再枚举所有点转移即可. #include<iostream> #include<cstdio> #include<cma ...
- apche启动错误|httpd.pid overwritten — Unclean shutdown of previous Apache run?
APACHE启动成功,但无法接受任何请求,查看ERROR.LOG文件[warn] pid file /opt/apache/logs/httpd.pid overwritten - Unclean s ...
- 5 Django系列之通过list_display展示多对多与外键内容在admin-web界面下
list_display展示多对多关系的内容 表结构关系 表一 class Server(models.Model): asset = models.OneToOneField('Asset') cr ...
- Html中的文本框和单选按钮
Html中的文本框和单选按钮用来制作页面的登录注册使用.. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN& ...
- 【转】一千行MySQL学习笔记
/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ ...
- Nodejs事件引擎libuv源码剖析之:高效队列(queue)的实现
声明:本文为原创博文,转载请注明出处. 在libuv中,有一个只使用简单的宏封装成的高效队列(queue),现在我们就来看一下它是怎么实现的. 首先,看一下queue中最基本的几个宏: typede ...
- kettle将Excel数据导入oracle
导读 Excel数据导入Oracle数据库的方法: 1.使用PL SQL 工具附带的功能,效率比较低 可参考这篇文章的介绍:http://www.2cto.com/database/201212/17 ...
- Fedora20-32bit cross-compiling arm-linux-gcc4.3.2
目录 0 前言 1 安装arm-linux-gcc-4.3.2 2 配置 nfs 服务器 0 前言 之前在 fedora 64bit 上建立交叉编译,但由于4.4.3版本需要另装用于gdb-serve ...
- Qt 5.0+ 中 connect 新语法与重载函数不兼容问题的解决方法,以及个人看法
Qt 5.0+ 版本提供了 connect 的新语法,相比之前的语法新语法可以提供编译期检查,使用也更方便.可是使用过程中发现一个小问题——当某个 signal 和成员函数是重载关系的时候,qmake ...