自动化部署脚本--linux执行sh脚本
自动化部署脚本文件目录:

运行主程序:./install.sh
#!/bin/bash
SCRIPTPATH=$(cd "$(dirname "$0")"; pwd)#
Install_log=$SCRIPTPATH/install_log.txt
echo "***start install***" > $Install_log
echo " workspace is $SCRIPTPATH" | tee -a "$Install_log"#写入日志文件日志
show_license() {
clear
confirm='Do you agree with this license? [y/n]: '
more license.txt
lic_agreed=''
while read -p 'Do you agree with this license? [y/n]: ' lic_agreed
do
case "$lic_agreed" in
y | Y ) break;;
n | N ) echo 'License refused - exiting.' ;exit 1;;
* ) ;;
esac
done
}
install_expect(){
# start install expect
rpm -ivh --force expect/tcl-8.5.13-8.el7.x86_64.rpm
if [[ 0 != $? ]] ; then
echo "tcl install Failed !!!!!!" | tee -a "$Install_log"
exit 1
else
echo "tcl install Success !!!!!!" | tee -a "$Install_log"
fi
rpm -ivh --force expect/expect-5.45-14.el7_1.x86_64.rpm
if [[ 0 != $? ]] ; then
echo "expect install Failed !!!!!!" | tee -a "$Install_log"
exit 1
else
echo "expect install Success !!!!!!" | tee -a "$Install_log"
fi
# expect install finish
}
install_unzip(){
# start unzip
rpm -ivh --force unzip/unzip-6.0-19.el7.x86_64.rpm
if [[ 0 != $? ]] ; then#$? 是上一个程序执行是否成功的标志,如果执行成功则$? 为0,否则 不为0
echo "unzip install Failed !!!!!!" | tee -a "$Install_log"
exit 1
else
echo "unzip install Success !!!!!!" | tee -a "$Install_log"
fi
#unzip install finish
}
install_killall(){
# start killall
rpm -ivh --force killall/psmisc-22.20-15.el7.x86_64.rpm
if [[ 0 != $? ]] ; then
echo "killall psmisc install Failed !!!!!!" | tee -a "$Install_log"
else
echo "killall psmisc install Success !!!!!!" | tee -a "$Install_log"
fi
#killall install finish
}
install_snmp(){
snmpstatus=0
rpm -ivh --force snmplib/net-snmp-libs-5.7.2-33.el7_5.2.x86_64.rpm
let snmpstatus+=$?
sleep 2
rpm -ivh --force snmplib/net-snmp-utils-5.7.2-33.el7_5.2.x86_64.rpm
let snmpstatus+=$?
if [[ 0 != $snmpstatus ]] ; then
echo "snmp install Failed !!!!!!" | tee -a "$Install_log"
else
echo "snmp install Success !!!!!!" | tee -a "$Install_log"
fi
}
install_java(){
#start to install java
rpm -ivh --force java/jdk-8u144-linux-x64.rpm
if [[ 0 != $? ]] ; then
echo "java install Failed !!!!!!" | tee -a "$Install_log"
exit 1
else
echo "java install Success !!!!!!" | tee -a "$Install_log"
fi
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar
#java install finish
}
install_activemq(){
#start to install activemq
tar zxvf activemq/apache-activemq-5.13.0.tar.gz | tee -a "$Install_log"
$SCRIPTPATH/apache-activemq-5.13.0/bin/linux-x86-64/activemq start &
sleep 5
echo "activemq install finish" | tee -a "$Install_log"
#activemq install finish
}
install_redis(){
#start to install redis
tar zxvf redis/redis-3.2.9.tar.gz
$SCRIPTPATH/redis-3.2.9/src/redis-server $SCRIPTPATH/redis-3.2.9/redis.conf &
sleep 5
echo "redis install finish" | tee -a "$Install_log"
#redis install finish
}
install_systemdlib(){
libstatus=0
rpm -ivh --force libsystemd/lz4-1.7.5-2.el7.x86_64.rpm
let libstatus+=$?
sleep 2
rpm -ivh --force libsystemd/systemd-libs-219-57.el7.x86_64.rpm
let libstatus+=$?
if [[ 0 != $libstatus ]] ; then
echo "systemdlib install Failed !!!!!!" | tee -a "$Install_log"
exit 1
else
echo "systemdlib install Success !!!!!!" | tee -a "$Install_log"
fi
}
install_postgres(){
#start to install postgres
cd postgres
status=0
rpm -ivh --force pgdg-centos96-9.6-3.noarch.rpm
let status+=$?# $?取上一个安装结果,安装成功为0,安装失败为1
sleep 2
rpm -ivh --force postgresql96-libs-9.6.5-1PGDG.rhel7.x86_64.rpm
let status+=$?
sleep 2
rpm -ivh --force postgresql96-9.6.5-1PGDG.rhel7.x86_64.rpm
let status+=$?
sleep 2
rpm -ivh --force libxslt-1.1.28-5.el7.x86_64.rpm
let status+=$?
sleep 2
rpm -ivh --force postgresql96-contrib-9.6.5-1PGDG.rhel7.x86_64.rpm
let status+=$?
sleep 2
rpm -ivh --force postgresql96-devel-9.6.5-1PGDG.rhel7.x86_64.rpm
let status+=$?
sleep 2
rpm -ivh --force postgresql96-server-9.6.5-1PGDG.rhel7.x86_64.rpm
let status+=$?
sleep 2
if [[ 0 != $status ]] ; then
echo "postgres install Failed !!!!!!" | tee -a "$Install_log"
exit 1
else
echo "postgres install Success !!!!!!" | tee -a "$Install_log"
fi
sleep 2
cd $SCRIPTPATH
#postgres install finish
}
init_postgresql(){n
#init postgresql
adduser uxsino
/usr/pgsql-9.6/bin/postgresql96-setup initdb
service postgresql-9.6 start
$SCRIPTPATH/init-data.sh | tee -a "$Install_log"
sleep 10
mv -f $SCRIPTPATH/postgresql.conf /var/lib/pgsql/9.6/data/
mv -f $SCRIPTPATH/pg_hba.conf /var/lib/pgsql/9.6/data/
sleep 5
service postgresql-9.6 restart
sleep 10
echo "postgresql init finish" | tee -a "$Install_log"
#postgresql init finish
}
stop_firewalld(){
#stop & disable firewalld
systemctl stop firewalld.service | tee -a "$Install_log"
sleep 10
systemctl disable firewalld.service | tee -a "$Install_log"
echo "stop & disable firewalld finish" | tee -a "$Install_log"
#stop & disable firewalld finish
}
auto_run_config(){
echo "export JAVA_HOME=/usr/java/jdk1.8.0_144" > $SCRIPTPATH/autostart.sh
echo "export JRE_HOME=$JAVA_HOME/jre" >> $SCRIPTPATH/autostart.sh
echo "export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin" >> $SCRIPTPATH/autostart.sh
echo "export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/dt.jar" >> $SCRIPTPATH/autostart.sh
echo "service postgresql-9.6 restart" >> $SCRIPTPATH/autostart.sh
echo "sleep 30" >> $SCRIPTPATH/autostart.sh
echo "$SCRIPTPATH/redis-3.2.9/src/redis-server $SCRIPTPATH/redis-3.2.9/redis.conf &" >> $SCRIPTPATH/autostart.sh
echo "sleep 10" >> $SCRIPTPATH/autostart.sh
echo "$SCRIPTPATH/apache-activemq-5.13.0/bin/linux-x86-64/activemq start &" >> $SCRIPTPATH/autostart.sh
echo "sleep 10" >> $SCRIPTPATH/autostart.sh
echo "systemctl stop firewalld.service" >> $SCRIPTPATH/autostart.sh
echo "sleep 10" >> $SCRIPTPATH/autostart.sh
echo "$SCRIPTPATH/simo/scripts/runlib" >> $SCRIPTPATH/autostart.sh
chmod 777 $SCRIPTPATH/autostart.sh
confirm='Do you want set SIMO auto run? [y/n]: '
auto_agreed=''
while read -p 'Do you want set SIMO auto run? [y/n]: ' auto_agreed
do
case "$auto_agreed" in
y | Y )
#set simo auto run
echo "$SCRIPTPATH/autostart.sh" >> /etc/rc.d/rc.local #linux系统自启动文件需要配置的文件路径
chmod +x /etc/rc.d/rc.local
break;;
n | N ) echo 'Do not set SIMO auto run' ;break;;
* ) ;;
esac
done
}
#unzip simo and config simo
unzip_simo(){
unzip $SCRIPTPATH/simo-source/simo.zip
cp $SCRIPTPATH/application.properties $SCRIPTPATH/simo/scripts/
#enable/disable servicecenter
echo "$SCRIPTPATH/simo/scripts/runmodule simo-servicecenter 512m &" > $SCRIPTPATH/runlib
echo "sleep 5" >> $SCRIPTPATH/runlib
#enable/disable collector
echo "$SCRIPTPATH/simo/scripts/runmodule simo-collector 1024 &" >> $SCRIPTPATH/runlib
echo "sleep 5" >> $SCRIPTPATH/runlib
#enable/disable business
echo "$SCRIPTPATH/simo/scripts/runmodule simo-business 512m &" >> $SCRIPTPATH/runlib
echo "sleep 5" >> $SCRIPTPATH/runlib
#enable/disable itsm
echo "$SCRIPTPATH/simo/scripts/runmodule simo-itsm 1024m &" >> $SCRIPTPATH/runlib
echo "sleep 5" >> $SCRIPTPATH/runlib
#enable/disable cmdb
echo "$SCRIPTPATH/simo/scripts/runmodule simo-cmdb 512m &" >> $SCRIPTPATH/runlib
echo "sleep 5" >> $SCRIPTPATH/runlib
#enable/disable workflow
echo "$SCRIPTPATH/simo/scripts/runmodule simo-workflow 512m &" >> $SCRIPTPATH/runlib
echo "sleep 10" >> $SCRIPTPATH/runlib
#enable/disable mc
echo "$SCRIPTPATH/simo/scripts/runmodule simo-mc 2048m &" >> $SCRIPTPATH/runlib
mv -f $SCRIPTPATH/runlib $SCRIPTPATH/simo/scripts/
}
run_simo(){
chmod 777 $SCRIPTPATH/simo/scripts/runlib
$SCRIPTPATH/simo/scripts/runlib
}
show_license
install_expect
install_unzip
install_killall
install_snmp
install_java
install_activemq
install_redis
install_systemdlib
install_postgres
init_postgresql
stop_firewalld
auto_run_config
unzip_simo
run_simo
exit 0
init-data.sh脚本如下:
#!/usr/bin/expect
set timeout 900
set user postgres
spawn su $user
expect "bash-4.2*"
send "psql\r"
expect "postgres=#"
send "alter user postgres with password 'postgres';\r"
expect "postgres=#"
send "create user uxsino with password 'Uxs!nO10';\r"
expect "postgres=#"
send "create database simo_dev owner uxsino;\r"
expect "postgres=#"
send "GRANT ALL PRIVILEGES ON DATABASE simo_dev to uxsino;\r"
expect "postgres=#"
send "\\q\r"
expect "bash-4.2*"
send "exit\r"
expect eof
自动化部署脚本--linux执行sh脚本的更多相关文章
- linux执行sh脚本文件命令
linux执行sh脚本文件命令 很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将这些命令写成sh脚本,下次执行下这个脚本一切就都搞定了,下面就是发布代码的一个脚本 ...
- 在Linux中执行.sh脚本,异常
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory. 分析:这是不同系统编码格式引起的:在windows系统中 ...
- 在Linux中执行.sh脚本,异常/bin/sh^M
在Linux中执行.sh脚本,异常/bin/sh^M 在linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory. 分 ...
- Linux定时执行.sh脚本
因为测试ffmpeg推流用flv方式的话没有做自动断流,所以要先用.sh脚本来执行关流,降低CPU和其他资源占用 首先编写.sh文件 #! /bin/bash echo "kill ffmp ...
- 执行sh脚本文件下载Github上的代码(雷霄骅的ffmpeg示例代码)
今天想重新学习下ffmpeg,于是又来到了雷晓骅的博客,先下载了他的所有代码,这里记录一下在Windows上使用sh脚本下载GitHub上代码的过程. CygWin(最后并没有用到) 可以 ...
- windows调起git bash执行sh脚本定时统计git仓库代码量
本来挺简单的一个东西硬是弄了两天 心力交瘁 找了网上不少资料 整理一下发给大家 首先是统计每个人的代码量的git命令 在网上找的 我这里做了以下修改 git log --format='%aN'|so ...
- Linux执行shell脚本方式及区别&命令后台运行
Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/
- Linux执行.sh文件,提示No such file or directory的问题的解决方法
亲测有效:http://www.jb51.net/LINUXjishu/56395.html Linux执行.sh文件,提示No such file or directory的问题的解决方法 在win ...
- linux执行sh报错:$’\r’: 未找到命令的解决
背景 执行.sh脚本时出现$'\r': 未找到命令, 原因 是因为命令直接从windows 复制过来导致的 解决 yum install dos2unix dos2unix **.sh 进行转换 再次 ...
随机推荐
- python基础之函数当中的装饰器
在实际工作当中存在一个开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新 ...
- NIO、BIO、AIO
BIO(同步阻塞):Socket编程就是 BIO ,操作时会阻塞线程,并发处理能力低 .阻塞的原因在于:操作系统允许的线程数量是有限的,多个socket申请与服务端建立连接时,服务端不能提供相应数量的 ...
- MySQL性能优化(三):索引
原文:MySQL性能优化(三):索引 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbi ...
- SQLServer 存储过程详解
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- 小程序存emoji表情 不改变数据库
1.小程序:提交前先编码 encodeURIComponent(data) 2.服务端解码(PHP) urldecode(data) 3.如果有空格字符串的,保存之前先对空格进行处理,不然空格在页面会 ...
- Hadoop学习之 HIVE 多用户模式安装
一.启动hadoop 集群 1.启动zookeeper 集群 zkServer.sh start 2.在master.hadoop 机器上 ./start-all.sh 由于 start-all命 ...
- subversion(SVN)服务配置及使用方法
1.安装 yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql -y 2.查看版本 svnserve --vers ...
- Chrome去掉标签页8个框
最终效果: 解决思路: 在标签页鼠标右击弹出的菜单项中存在“查看页面源码”一项,由此可确定chrome的标签页是由一个html页面控制的,只要修改其页面源码便能去掉8个框. 经网上查阅确定了标签页的源 ...
- 【2017 北京集训 String 改编版】子串
题意 你有一个字符串,你需要支持两种操作: 1:在字符串的末尾插入一个字符 \(c\) 2:询问当前字符串的 \([l,r]\) 子串中的不同子串个数 为了加大难度,操作会被加密(强制在线). \(n ...
- java代码调用exe(cmd命令)
public class ShellCommand{ public static void execCmd(String cmd, boolean wait) { execC ...