#!/bin/bash
#=======================================================================================
#
#FILE:automount
#USAGE:automount[-h][copyBash_Code_Style]
#DESCRIPTION:copybashstyleguideandcodingstandard.
#OPTIONS:seefuction'usage'below
#REQUIREMENTS:---
#BUGS:---
#NOTES:---
#AUTHOR:Dr.-Vision.Simple(sp).
#COMPANY:China
#VERSION:1.0
#CREATED:28.09.2016-10:15:30
#REVISION:28.09.2016
#PROJECT:XXX
#copYRITHT:copyright(c)2002-2020Shell,AllRightsReserved
#=======================================================================================

#Ifrequired,additionalinformationhastobeadded(e.gcopyrightnote,projectassignment).

TODAY=`date+%Y-%m-%d`
Now=`date+%H-%M`
BASE=$0
BASEDIR=$(dirname$0)
USAGE=$(echo-e"${BASE%%.*}")
LOG_PATH="${BASEDIR}/proclog/${TODAY}/${USAGE}"
mkdir-p${LOG_PATH}
CMD_LOG="${LOG_PATH}/${Now}_${USAGE}.cmd"
INFO_LOG="${LOG_PATH}/${Now}_${USAGE}.info"
ERROR_LOG="${LOG_PATH}/${Now}_${USAGE}.err"
FSTAB_NAME="/etc/fstab"
BAK_FSTAB="/etc/fstab.bak"
MOUNT_FILE_INFO="/tmp/mount_info"
MOUNT_FILE="/tmp/mount_file"
SFdisK_FILE_INFO="/tmp/sfdisk_info"
DIFF_INFO="/tmp/sfdisk_diff_info"
DIFF_FILE="/tmp/sfdisk_diff_file"
MOUNT_POINT="/data/dev"
MTYPE="ext4"
FLAG=0
exec4>${MOUNT_FILE_INFO}
exec5>${SFdisK_FILE_INFO}
exec6>${DIFF_INFO}

#Functioncomments

#===FUNCTION====================================================================
#NAME:
#DESCRIPTION:displayusageinformationforthisscript.
#ParaMETER1:---
#=======================================================================================
functionreadme{
echo-e'\033[01;33m'
cat<<EOF
*******************************************
KeepWarnning.
*******************************************
Keys:
1.Check/etc/fstab.bakisexistsandsetupbasedir.
2.read/etc/fstabandsavein/etc/fstab.bak.
3.getdiskdeviceinfo
4.formatandmountdisk
5.write/etc/fstab.
*******************************************
EOF
echo-e'\033[01;0m'
read-p"线上设备已经格式化,确认?(y/n)"answer
case$answerin
y|Y|yes|Yes|YES)
echo""
;;
n|N|no|No|NO)
rm-rf${DIFF_INFO}${MOUNT_FILE_INFO}${SFdisK_FILE_INFO}
echo"退出脚本!"
exit0
;;
*)
echo"退出脚本!"
exit0
;;
esac
}

functioncheck_env{
#>${INFO_LOG}
#FirsTRUN
iftest!-d"${LOG_PATH}";then
mkdir-p"${LOG_PATH}"
exec2>${ERROR_LOG}
exec8>>${CMD_LOG}
echo-e"################################1.1CheckEnvstart################################\n"1>&8
else
exec2>${ERROR_LOG}
exec8>>${CMD_LOG}
echo-e"################################1.1CheckEnvstart################################\n"1>&8
fi

if[[-e${BAK_FSTAB}]];then
printf"\e[32m#############${Now}CheckFile/etc/fstab[AlreadyExists]############\e[0m\n"
printf"\e[32m#############${Now}CheckFile/etc/fstab[AlreadyExists]############\e[0m\n">${INFO_LOG}
echo"rm-rf${DIFF_INFO}${MOUNT_FILE_INFO}${MOUNT_FILE}${SFdisK_FILE_INFO}${SFdisK_FILE}\n"1>&8
rm-rf${DIFF_INFO}${MOUNT_FILE_INFO}${MOUNT_FILE}${SFdisK_FILE_INFO}${SFdisK_FILE}
exit0
else
exec3>${BAK_FSTAB}
FLAG=1
echo"exec3>${BAK_FSTAB}FLAG=1"1>&8
printf"\e[32m################FirstWrite/etc/fstab[Running]##############\e[0m\n"
printf"\e[32m################FirstWrite/etc/fstab[Running]##############\e[0m\n">${INFO_LOG}
fi
echo"################################1.1CheckEnvend################################"1>&8
}

functionread_fstab{
echo"################################1.2ReadfstabStart################################"1>&8
whilereadDATA
do
echo"${DATA}"
done<${FSTAB_NAME}>&3
wait;
printf"\e[32m################Read/etc/fstab[OK]##############\e[0m\n"
printf"\e[32m################Read/etc/fstab[OK]##############\e[0m\n">>${INFO_LOG}
echo"################################1.2ReadfstabEnd################################"1>&8
}

functionget_device_info(){
#mount_device_info=`df-Th|tail-n+2|awk'{print$1}'|grep-v"tmpfs"|awk'{printsubstr($0,1,length-1)}'|uniq`
echo"#############################1.3GetDeviceinfoStart#############################"1>&8
mount_device_info=`df-Th|tail-n+2|awk'{print$1}'|grep-v"tmpfs\|sda[0-9]"|uniq`
sfdisk_device_info=`ls/dev/sd*|grep-v"[0-9]\|sda"`
echo"${mount_device_info}">&4
echo"${sfdisk_device_info}">&5
diff_info="`sort${MOUNT_FILE_INFO}${SFdisK_FILE_INFO}|uniq`"
echo"diff_info:sort${MOUNT_FILE_INFO}${SFdisK_FILE_INFO}|uniq"1>&8
if[[${diff_info}!=""]];then
echo"${diff_info}|tr-d\"[0-9]\"|awk'{if(length!=0)print$0}'>&6"1>&8
echo-e"${diff_info}"|tr-d"[0-9]"|awk'{if(length!=0)print$0}'>&6
printf"\e[32m################GetDeviceInfo[Success]##############\e[0m\n"
printf"\e[32m################GetDeviceInfo[Success]##############\e[0m\n">>${INFO_LOG}
else
echo"cat/dev/null>&6"1>&8
cat/dev/null>&6
printf"\e[32m################GetDeviceInfo[Failed]##############\e[0m\n"
printf"\e[32m################GetDeviceInfo[Failed]##############\e[0m\n">>${INFO_LOG}
fi
echo"#############################1.3GetDeviceinfoEnd#############################"1>&8
}

functionwrite_device_info{
echo"#############################1.4PreWritefstabStart#########################"1>&8
echo"#############################1.4PreWritefstabStart#########################">>${INFO_LOG}
DIFF_SIZE=$(du${DIFF_INFO}|awk'{print$1}')
echo-e"################WriteFstab.bakStart-Time:${TODAY}################\n">>${BAK_FSTAB}
if[[-s${DIFF_INFO}&&${DIFF_SIZE}-ge4]];then
devices=$(cat${DIFF_INFO}|wc-l)
awk'$0=""NR""$0'${DIFF_INFO}>${DIFF_FILE}
if[[${DIFF_SIZE}-gt1&&${FLAG}!=0]];then
for((id=1;id<=${devices};id++))
do
eval`awk-vid=$id'{if($1==id)print"name="$2";id="$1}'${DIFF_FILE}`
num=$(expr${id}-1)
#echo"mount-oremount,rw-t${MTYPE}${name}${MOUNT_POINT}${num}"1>&1|tee${MOUNT_FILE}>>${FSTAB_NAME}
remount=`df-Th|grep"${MOUNT_POINT}${num}"|wc-l`
if[[${remount}-eq0]];then
echo"mount-t${MTYPE}${name}${MOUNT_POINT}${num}"1>&8
mount-t${MTYPE}${name}"${MOUNT_POINT}${num}"
else
echo"mount-oremount,rw-t${MTYPE}${name}${MOUNT_POINT}${num}"1>&8
mount-oremount,rw-t${MTYPE}${name}"${MOUNT_POINT}${num}"
fi
if[!-f"${MOUNT_POINT}${num}/${num}"];then
mkdir-p"${MOUNT_POINT}${num}"&&touch"${MOUNT_POINT}${num}/${num}"
echo"mkdir-p${MOUNT_POINT}${num}&&touch${MOUNT_POINT}${num}/${num}"1>&8
echo"${name}\t\t${MOUNT_POINT}${num}\t\t${MTYPE}\tdefaults00>>${BAK_FSTAB}"1>&8
echo-e"${name}\t\t${MOUNT_POINT}${num}\t\t${MTYPE}\tdefaults00">>${BAK_FSTAB}
printf"\e[32m################disk${name}isAlreadMount[OK]##############\e[0m\n"
printf"\e[32m################disk${name}isAlreadMount[OK]##############\e[0m\n">>${INFO_LOG}
else
printf"\e[32m################disk${name}isAlreadMount[OK]##############\e[0m\n">>${INFO_LOG}
printf"\e[32m################disk${name}isAlreadMount[OK]##############\e[0m\n"
echo"${name}\t\t${MOUNT_POINT}${num}\t\t${MTYPE}\tdefaults00>>${BAK_FSTAB}"1>&8
echo-e"${name}\t\t${MOUNT_POINT}${num}\t\t${MTYPE}\tdefaults00">>${BAK_FSTAB}
fi
done
fi
echo"rm-rf${DIFF_INFO}${MOUNT_FILE_INFO}${MOUNT_FILE}${SFdisK_FILE_INFO}${SFdisK_FILE}"1>&8
rm-rf${DIFF_INFO}${MOUNT_FILE_INFO}${MOUNT_FILE}${SFdisK_FILE_INFO}${SFdisK_FILE}
else
printf"\e[32m################AlldiskisAlreadMount[OK]##############\e[0m\n"
printf"\e[32m################AlldiskisAlreadMount[OK]##############\e[0m\n">>${INFO_LOG}
fi
echo-e"################WriteFstab.bakEnd-Time:${TODAY}################\n">>${BAK_FSTAB}
echo"#############################1.4PreWritefstabEnd#########################"1>&8
echo"#############################1.4PreWritefstabEnd#########################">>${INFO_LOG}
}

functionwrite_fstab{
echo"#############################1.5WritefstabStart#########################"1>&8
if[[-f${BAK_FSTAB}&&-f${FSTAB_NAME}]];then
exportcomm_result="$(comm-3${BAK_FSTAB}${FSTAB_NAME})"
fi
echo-e'\033[01;33m'
cat<<EOF>>${INFO_LOG}
****************************************************************************************
WriteWarnning.
****************************************************************************************
WriteKeys:
1.Writemountdeviceinfoandautomount.
2.result=$(echo-e"$comm_result")
****************************************************************************************
EOF
echo"${comm_result}">>${FSTAB_NAME}
awk'!a[$0]++'${BAK_FSTAB}>${FSTAB_NAME}
echo"#############################1.5WritefstabEnd#########################"1>&8
}

functionmain_func{
readme
check_env
read_fstab
get_device_info
write_device_info
write_fstab
}

#Sectioncomments

#---------------------------------------------------------------------------------------
#definemain.
#---------------------------------------------------------------------------------------

main_func

#lineendcomments

Centos-automount的更多相关文章

  1. Html5原创俄罗斯方块(基于canvas)

    这篇文章主要介绍了Html5原创俄罗斯方块(基于canvas)的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. 关于h5中的fetch方法解读(小结)

    这篇文章主要介绍了关于h5中的fetch方法解读(小结),fetch身为H5中的一个新对象,他的诞生,是为了取代ajax的存在而出现,有兴趣的可以了解一下

  3. 使用最新的Flurry SDK和ios4重新启动应用程序

    我真的希望这对我来说只是一个愚蠢的错误.我很高兴使用Flurry但这样的事情会导致我的应用被拒绝.解决方法我写了关于这个的Flurry,他们很快回到我身边,他们会调查这个.大约一个星期后,他们回信并表示他们已经在v2.6中修复了它,现在可用了.我似乎无法重现这个问题.不是说我很棒或者什么,但我还是单枪匹马地解决了这个问题.

  4. ios – 从Live Photo中提取视频部分

    有没有人想出如何从LivePhoto中提取视频部分?

  5. ios – 使用Swift的Lumberjack 2.0记录器

    我以前使用物镜C的Lumberjack记录器,我喜欢它.现在我开始学习Swift,我不能在那里使用我最喜欢的记录器.有人可以一步一步地写出我能做到的事吗?在Lumberjack2.0发布之前,我尝试在这里找到一些东西,但所有主题都是自定义包装器.我做了什么:>我用Cocoapods添加了Lumberjack;>我将“#import”添加到Bridging-Header文件中.我不知道接下来该怎么办?因为在ObjC中我有宏:staticconstintddLogLevel=LOG_LEVEL_INFO;el

  6. 如何在Xcode 4.1中调试OpenCL内核?

    我有一些OpenCL内核没有做他们应该做的事情,我很想在Xcode中调试它们.这可能吗?当我在我的内核中使用printf()时,OpenCL编译器总是给我一大堆错误.解决方法将格式字符串转换为constchar*似乎可以解决此问题.这适用于Lion:这有上述错误:

  7. 如何在iOS 10上设置日志级别?

    换句话说,如果我在iOS上运行的代码就像这样:那么在Console.app中看到记录的消息需要做些什么呢?

  8. 为什么Xcode 8(iOS 10)在控制台中打印[LogMessageLogging]

    为什么Xcode8打印[LogMessageLogging]在控制台中,当我调用地图视图时?任何人都可以提出一些建议吗?解决方法PrivacyTheunifiedloggingsystemconsidersdynamicstringsandcomplexdynamicobjectstobeprivate,anddoesnotcollectthemautomatically.Toensuretheprivacyofusers,itisrecommendedthatlogmessagesconsiststri

  9. ios – 从embedded.mobileprovision配置文件获取证书到期日期

    谁可以帮我进一步?

  10. ios – 在Swift 4中为os_log传递可变参数

    我正在尝试为Swift4/iOS11中的os_log编写一个方便的包装器,但是我已经遇到了传递可变参数的艰难战斗.基本上,我想编写一个如下所示的函数.不幸的是,我似乎无法弄清楚传递参数的神奇语法,并且在CVararg讨论的泥潭中有点迷失.(…这让我想念Python的splatting语法)解决方法我还没有找到解决方案,所以这个愚蠢的黑客:

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部