场境:实施最头痛的不是遇到问题,而是允许操作服务器时间太少,有时候10几个人用一台,如何更快速的完成服务的部署?
shell功能介绍:
适用于Linux系统,将.tar.gz或.tar格式的文件从/home/source目录批量自动解压到/opt/smile目录中,并将源目录/home/source中的文件移动至/opt/smile目录中
特性:
该过程单个文件移动,同时运行一次将操作信息保存到日志中,日志目录为/opt/smile/smile.log
注意:先创建/opt/smile/目录,这个目录可以随便命名,在脚本里修改即可(一般为公司简称),并给权限
- 将需要解压的目录上传到服务器,创建/opt/smile/目录
- 编辑脚本,给权限
vim /opt/smile/auto_install.sh
#! /bin/bash
#日志目录
log="/opt/smile/smile.log"
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
#打开指定目录
cd /home/source
#获取目录中的文件数,筛选标准是“行首后紧跟着一个-符号”(^代表行首,)
count=`ls -l|grep '^-'|wc -l`
#对目录中的每个文件进行操作,判断目录中是否有文件
if [ $count -ne 0 ];then
for i in `ls -1`
do
echo "操作文件名:$i ">>$log;
# 将文件解压到指定目录
tar zxvf /home/source/$i -C /opt/smile;
#将文件移动到指定目录
mv /home/source/$i /opt/smile;
done
echo "$curtime ,执行成功,操作数目: $count">>$log
else
echo "$curtime source is empty.">>$log
fi
sudo chmod -R 777 /opt/smile/
- 执行并验证
屏幕显示,解压过程
执行成功,并有日志
总结:
可以根据情况对脚本进行调整,zip包也可以进行批量解压,改命令即可!还可以根据情况添加一些判断是否具备软件部署条件,如:java -version ,若依赖Java环境,根据返回值判断,以解压1个为例,10个也一样,方便演示,复杂的先不介绍了!
例如:可以判断是什么格式的文件用对应的命令来解压(适用于zip包与gz包混合情况)
#! /bin/bash
#日志目录
log="/opt/smile/smile.log"
#获取当前时间
curtime=`date +"%Y/%m/%d %H:%M:%S"`
#打开指定目录
cd /home/source
#获取目录中的文件数,筛选标准是“行首后紧跟着一个-符号”(^代表行首,)
count=`ls -l|grep '^-'|wc -l`
#对目录中的每个文件进行操作,判断目录中是否有文件
#if [ $count -ne 0 ];then
for i in `ls -1`
do
if [ "${i##*.}" == "gz" ];then
echo "操作文件名:$i ">>$log;
# 将文件解压到指定目录
tar zxvf /home/source/$i -C /opt/smile;
#将文件移动到指定目录
mv /home/source/$i /opt/smile;
elif [ "${i##*.}" == "zip" ];then
mv /home/source/$i /opt/smile;
cd /opt/smile && unzip $i
echo "$curtime ,执行成功,操作数目: $count">>$log
else
echo "$curtime source is empty.">>$log
fi
done