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检测磁盘是否挂载的更多相关文章

  1. ubuntu中磁盘挂载与卸载

      问题描述:          ubuntu中磁盘的挂载和卸载     问题解决:          (1)ubuntu中磁盘挂载        注:    如上所示,使用命令df查看磁盘使用情况 ...

  2. linux下磁盘的挂载与卸载

    Linux下每个文件系统都有独立的inode,block,super block等信息,这个文件系统要挂载到目录树才可以使用,将文件系统与目录树结合的操作称为挂载,反之则为卸载. 也就是说,挂载点一定 ...

  3. 检测磁盘驱动的健康程度SMART

    在linux中,工具包的名字为smartmontools 在CentOS中可以使用 yum install smartmontools来安装工具 首先通过smartctl -i /dev/sda 来检 ...

  4. Ubuntu 将其他盘挂载到/home的子目录下

    Ubuntu 14.04 将其他盘挂载到/home的子目录下当安装完Ubuntu系统,由于当时没有注意,分配的分区空间太小.经过一段时间安装了各式各样的软件后,常常会遇到/home目录下空间不够的情况 ...

  5. aix磁盘分区挂载问题

    aix在进行磁盘分区挂载时,可能会报错

  6. VMwave下Ubuntu扩展磁盘空间

    VMwave下Ubuntu扩展磁盘空间 Ubuntu原预装磁盘空间20G,随着系统安装软件越来越多,空间慢慢不够用. 打算安装DB2,许扩展磁盘空间. 环境: No LSB modules are a ...

  7. Linux系统格式化新磁盘并挂载分区

    Linux系统格式化新磁盘并挂载分区 在虚拟机的设置界面中,我们可以选择添加硬盘 添加好硬盘后,我们输入命令fdisk -l 看到有一个未经分区的硬盘 Fdisk命令编辑这个硬盘 输入n创建分区,p选 ...

  8. CentOS 7 增加磁盘分区挂载(lvm)

    1.查看主机现有磁盘情况 # fdisk -l 现在主机中存在一块8G的磁盘sdb,尚未分区挂载,所以需将磁盘进行分区挂载. 2.对磁盘进行分区 # fdisk /dev/sdb   (选择要操作分区 ...

  9. xenserver添加磁盘后挂载为本地存储库并且删除

    方法一: 1.1:查看磁盘列表 fdisk -l [root@xenserver ~]# fdisk -l Disk /dev/sdb: 7999.4 GB, 7999376588800 bytes, ...

随机推荐

  1. JavaScript:综合案例---房贷计算器的实现

    房贷计算器的实现 (可以使用的编辑器:webStrom.subLime.notePad++.editPlus) 输入数据: 平方单价 70,000.00 元/平方  B1 租金 382.50 元/平方 ...

  2. [BS-18] 对OC中不可变类的理解

    对OC中不可变类的理解 OC中存在很多不可变的类(如NSString,NSAttributedString,NSArray,NSDictionary,NSSet等),用它们创建的对象存在于堆内存中,但 ...

  3. session的方法

    Hibernate对象的状态 瞬时(Transient) — 由 new 操作符创建,且尚未与Hibernate Session 关联的对象被认定为瞬时(Transient)的.瞬时(Transien ...

  4. ios_图片放大的两种方式transform和frame

    frame改变x值y值的方式放大图片,是从左上开始放大. frame改变控件宽高的方式放大图片,是从中心开始放大. 原头像大小 用frame改变宽高 transform方式放大图片,从中心开始放大

  5. ks使用lvm分区,ks启动

    part /boot -fstype ext3 -size= part swap -size= part pv. -size= -grow volgroup vg_root pv. logvol / ...

  6. MySQL数据复制的校验

    在5.6之前,管理员只能通过ssl实现检校验5.6中,可以使用CRC32检查和来保证master和slave的数据的完整性.校验信息记录在master的二进制日志中和slave的relay日志中. m ...

  7. java学习材料

    java资料大全 http://zz563143188.iteye.com/ it男视野扩展资料 HTTP://WLSAM168.400GB.COM 最全 spring mvc http://jinn ...

  8. Java基础之创建窗口——创建应用程序窗口(TryWindow)

    控制台程序. 准备好应用程序窗口及其包含的组件并显示,这称为实现窗口.调用应用程序窗口对象的setVisible()方法就会实现窗口.实现了应用程序的GUI之后,在主线程中修改或查询GUI可能会导致死 ...

  9. Java Servlet(一):创建工程(jdk7+tomcat7+eclipse)

    本篇文件主要记录下怎么在jdk7+tomcat7下,使用eclipse创建并运行一个servlet工程. 安装具体步骤从网上搜索就可以找到,这里不再赘述. 在eclipse中切换到j2ee下, 从导航 ...

  10. j2ee ehcache

    Ehcache is an open source, standards-based cache that boosts performance, offloads your database, an ...