Ubuntu检测磁盘是否挂载
Ubuntu默认不自动挂载磁盘.
只是学习Bash使用,需优化如使用
# file: mountAll.sh
# include color support
# a list of variables containing color code in xterm256
. bash.colors
# check if
function isMounted {
disk=$1
for d in `mount -l | awk '{print $1}' | sort |uniq`;do
if test "x$disk" = "x$d" ;then
# use `=' for string comparison, and `-eq' for numbers in SHELL
# in Perl5, string comparison is `eq' while numeric comparison is `='
# I prefer the Perl way
echo 1
# mounted
return
fi
# Note
# the `commands` capture data from stand out or function return value
done
echo 0
# not mounted
return
}
function isAllMounted(){
# check if there is disk not mounted
for disk in '/dev/sdb1' '/dev/sdc1' '/dev/sdc2';do
if test `isMounted $disk` -eq 0;then
# 0 not mounted, 1 mounted
echo 0
return
fi
done
echo 1
# 1 all mounted, 0 at least 1 disk not mounted
return
}
mount3IfThereIsNotMounted(){
if [ `isMounted '/dev/sdb1'` -eq 0 ];then
sudo /bin/mount /dev/sdb1 /mnt/data1 2>/dev/null
fi
if [ `isMounted '/dev/sdc1'` -eq 0 ];then
sudo /bin/mount /dev/sdc1 /mnt/data2 2>/dev/null
fi
if [ `isMounted '/dev/sdc2'` -eq 0 ];then
sudo /bin/mount /dev/sdc2 /mnt/data3 2>/dev/null
fi
}
if [ -x /usr/bin/sudo ];then
# check that the sudo is visible to the current login user
case " $(groups) " in
# if $USER is in the adm group
*\ adm\ *)
if [ `isAllMounted` -eq 0 ];then
# at least one disk not mounted
mount3IfThereIsNotMounted
if [ `isAllMounted` -eq 1 ];then
echo -e "${green}adm:Disks prepared\033[00m"
else
echo -e "${red}adm:Not all disks prepared\033[00m"
fi
else
echo -e "${blue}adm:Disks prepared\033[00m"
fi;;
*\ sudo\ *)
# if $USER is in the adm group
if [ !`isAllMounted` ];then
mount3IfThereIsNotMounted
if [ `isAllMounted` -eq 1 ];then
echo -e "${green}sudo:Disks prepared$endc"
else
echo -e "${red}sudo:Not all disks prepared$endc"
fi
else
echo -e "${blue}sudo:Disks prepared$endc"
fi;;
*)
if [ `isAllMounted` -eq 1 ];then
echo -e "${blue}Disks prepared$endc"
else
echo -e "${red}Not all disks prepared$endc"
fi;;
esac
fi
如果没挂载要输入密码,可以把密码embeded到expect脚本中
# file mountSilent
#!/usr/bin/expect
spawn bash mountAll.sh
expect "password\r"
send "********"
interact
Color 8
#file: bash.colors
prefix='\033[01;'
endc='\033[00m'
black=$prefix"30m"
red=$prefix"31m"
green=$prefix"32m"
yellow=$prefix"33m"
blue=$prefix"34m"
fuchsia=$prefix"35m"
ultramarine=$prefix"36m"
white=$prefix"37m"
bg_black=$prefix"40m"
bg_red=$prefix"41m"
bg_green=$prefix"42m"
bg_yellow=$prefix"44m"
bg_blue=$prefix"44m"
bg_fuchsia=$prefix"45m"
bg_ultramarine=$prefix"46m"
bg_white=$prefix"47m"
Ubuntu检测磁盘是否挂载的更多相关文章
- ubuntu中磁盘挂载与卸载
问题描述: ubuntu中磁盘的挂载和卸载 问题解决: (1)ubuntu中磁盘挂载 注: 如上所示,使用命令df查看磁盘使用情况 ...
- linux下磁盘的挂载与卸载
Linux下每个文件系统都有独立的inode,block,super block等信息,这个文件系统要挂载到目录树才可以使用,将文件系统与目录树结合的操作称为挂载,反之则为卸载. 也就是说,挂载点一定 ...
- 检测磁盘驱动的健康程度SMART
在linux中,工具包的名字为smartmontools 在CentOS中可以使用 yum install smartmontools来安装工具 首先通过smartctl -i /dev/sda 来检 ...
- Ubuntu 将其他盘挂载到/home的子目录下
Ubuntu 14.04 将其他盘挂载到/home的子目录下当安装完Ubuntu系统,由于当时没有注意,分配的分区空间太小.经过一段时间安装了各式各样的软件后,常常会遇到/home目录下空间不够的情况 ...
- aix磁盘分区挂载问题
aix在进行磁盘分区挂载时,可能会报错
- VMwave下Ubuntu扩展磁盘空间
VMwave下Ubuntu扩展磁盘空间 Ubuntu原预装磁盘空间20G,随着系统安装软件越来越多,空间慢慢不够用. 打算安装DB2,许扩展磁盘空间. 环境: No LSB modules are a ...
- Linux系统格式化新磁盘并挂载分区
Linux系统格式化新磁盘并挂载分区 在虚拟机的设置界面中,我们可以选择添加硬盘 添加好硬盘后,我们输入命令fdisk -l 看到有一个未经分区的硬盘 Fdisk命令编辑这个硬盘 输入n创建分区,p选 ...
- CentOS 7 增加磁盘分区挂载(lvm)
1.查看主机现有磁盘情况 # fdisk -l 现在主机中存在一块8G的磁盘sdb,尚未分区挂载,所以需将磁盘进行分区挂载. 2.对磁盘进行分区 # fdisk /dev/sdb (选择要操作分区 ...
- xenserver添加磁盘后挂载为本地存储库并且删除
方法一: 1.1:查看磁盘列表 fdisk -l [root@xenserver ~]# fdisk -l Disk /dev/sdb: 7999.4 GB, 7999376588800 bytes, ...
随机推荐
- C语言:其他进制转换为十进制(方法二)
#include<stdio.h> #include<math.h> #include<string.h> #include<ctype.h> //其他 ...
- Android -- Looper.prepare()和Looper.loop() —深入版
Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理.handler其实可以看做是一个工具类,用来向消息队列中插入消息的. (1) Loope ...
- AbsListView.OnScrollListener
public static interface AbsListView.OnScrollListener android.widget.AbsListView.OnScrollListener 类 ...
- 复制中的NOT FOR REPLICATION
错误#1 10:51 2012-9-4sp_MSget_repl_commands 重复键插入解答#1 修改distribution库下sp_MSget_repl_commands 存储过程decla ...
- [ROS] slam_gmapping
slam_gmapping节点 1)slam_gmapping 节点在sensor_msgs/LaserScan消息内获取数据并建立地图 map(nav_msgs/OccupancyGrid).该地图 ...
- javaScript常用工具库
对应于百度前端技术学院2015年春季的课程2相关内容 https://github.com/baidu-ife/ife/tree/master/2015_spring/task/task0002 ht ...
- Android中ScrollView嵌套GridView,解决GridView显示不全的问题
/** * 自定义gridview,解决ScrollView中嵌套gridview显示不正常的问题(1行半) * */ public class MyGridView extends GridView ...
- Java基础之处理事件——应用程序中的语义事件监听器(Sketcher 5 with element color listeners)
控制台程序. 为了标识元素的类型,可以为菜单已提供的4中元素定义常量,用作ID.这有助于执行菜单项监听器的操作,还提供了一种标识颜色类型的方式.我们会累积许多应用程序范围的常量,所以把它们定义为可以静 ...
- Request、Servlet及其子接口
最近看tomcat源码,这类接口多的有点眩,整理出来看一下.(基于tomcat4) javax.servlet.ServletRequset接口,和org.apache.catalina.Reques ...
- Velocity(1)——注释
Velocity的单行注释,使用## 多行注释使用#* cooments *#