简介: 明天再写,上脚本

#!/bin/bash
#------------------------------------------------------------------------------------------------------------------#
#| Some people die at the age of 25 and don't bury themselves in the earth until they are 75 |#
#------------------------------------------------------------------------------------------------------------------#
#| $$$$ $$ $$ $$$$$$ $$ $$ $$$$$$ $$ $$$$$$ $$$$$$ |#
#| $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ $$ |#
#| $$ $$$$$$$ $$$$$ $$ $$ $ $$ $$$$$$ $$ $$$$$ $$$$$ |#
#| $$ $$ $$ $$ $$ $ $ $$ $$ $$ $$ $$ |#
#| $$$$ $$ $$ $$$$$$ $$ $$ $$$$$ $$ $$$$$$ $$$$$$ $$$$$$ |#
#------------------------------------------------------------------------------------------------------------------#
onversion="4.0.3"
offversion=`basename redis-*.tar.gz .tar.gz | awk -F '-' '{print$2}'`
installdir=$(cd `dirname $0`; pwd)
cluster_name="redis-cluster"
port1="7001"
port2="7002"
confile1="redis-${port1}.conf"
confile2="redis-${port2}.conf"
nodes1="nodes-${port1}.conf"
nodes2="nodes-${port2}.conf"
logfile1="redis-${port1}.logs"
logfile2="redis-${port2}.logs" function initize(){
installdir=$(cd `dirname $0`; pwd)
} function checkroot(){
if [ $UID -ne 0 ]
then
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|------------------------------------------[权限不足...请切换至root用户]-----------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
exit;
fi
} function judge(){
echo
offfile=`ls | grep redis-*.tar.gz`
if [[ "$offfile" != "" ]]
then
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|--------------------------------------------------[发现离线包]--------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
/usr/bin/sleep 3
offinstall
else
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-------------------------------------------------[未发现离线包]-------------------------------------------------|"
echo "|--------------------------------------------[开始判断是否连接外网安装]------------------------------------------|"
/usr/bin/sleep 3
network
fi
} function offinstall(){
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|--------------------------------------------------[离线包安装中]------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
tar -zxvf redis-${offversion}.tar.gz >/dev/null 2>&1
redis="redis-${offversion}"
cd ${redis}/src && make >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "编译出错"
else
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|--------------------------------------------------[编译完成]----------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
/usr/bin/sleep 3
intend
fi
} function network(){
httpcode=`curl -I -m 10 -o /dev/null -s -w %{http_code}'\n' http://www.baidu.com`
net1=$(echo $httpcode | grep "200")
if [[ "$net1" != "" ]]
then
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-----------------------------------------------------[联网]-----------------------------------------------------|"
echo "|-------------------------------------------------[准备联网安装]-------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
/usr/bin/sleep 3
online
else
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-------------------------------------------[未联网,无离线安装包,准备退出]---------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
/usr/bin/sleep 3
exit;
fi
}
function online(){
wget_v=`which wget`
wget_vv=$(echo $wget_v | grep wget)
if [[ "$wget_vv" != "" ]]
then
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|--------------------------------------`wget -V |head -n 1`---------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
wget http://download.redis.io/releases/redis-${onversion}.tar.gz
installon
else
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|----------------------------------------[检测到wget没有安装, 准备安装wget]---------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
yum install wget -y
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|--------------------------------------`wget -V |head -n 1`---------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
wget http://download.redis.io/releases/redis-${onversion}.tar.gz
installon
fi
} function installon(){
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|--------------------------------------------------[在线包安装中]------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
tar -zxvf redis-${onversion}.tar.gz >/dev/null 2>&1
redis="redis-${onversion}"
cd ${redis}/src && make >/dev/null 2>&1
if [[ $? -ne 0 ]]; then
echo "编译出错"
else
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|----------------------------------------------------[编译完成]--------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
/usr/bin/sleep 3
intend
fi
} function intend(){
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-------------------------------------------------[开始迁移文件]-------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
mkdir -p ${installdir}/${cluster_name}/{logs,nodes,conf,bin}
cp redis-cli redis-server ${installdir}/${cluster_name}/bin
cp redis-trib.rb ${installdir}/${cluster_name}
cp ../redis.conf ${installdir}/${cluster_name}/conf/${confile1}
cp ../redis.conf ${installdir}/${cluster_name}/conf/${confile2}
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-------------------------------------------------[数据迁移完成]-------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
/usr/bin/sleep 2
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-------------------------------------------------[清理多余文件]-------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
#finish
/usr/bin/sleep 2
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-------------------------------------------------[配置快捷启动]-------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
service
/usr/bin/sleep 2
echo "|----------------------------------------------------------------------------------------------------------------|"
echo "|-------------------------------------------------[修改配置文件]-------------------------------------------------|"
echo "|----------------------------------------------------------------------------------------------------------------|"
configfile
/usr/bin/sleep 3
echo "|****************************************************************************************************************|"
echo "| WW WW EEEEEEE LL CCCCC OOOOOO MM MM EEEEEEE |"
echo "| WW WWWW WW EE LL CC OO OO MMMM MMMM EE |"
echo "| WW WW WW WW EEEEE LL CC OO OO MM MM MM MM EEEEE |"
echo "| WW W W WW EE LL CC OO OO MM M M MM EE |"
echo "| WW WW EEEEEEE LLLLLL CCCCC OOOOOO MM MMM MM EEEEEEE |"
echo "|****************************************************************************************************************|"
}
function finish(){
echo
rm -rf ${installdir}/redis-*
}
function service(){
cd ${installdir}/${cluster_name}
echo "./bin/redis-server conf/${confile1}" > start.sh
echo "./bin/redis-server conf/${confile2}" >> start.sh
chmod +x start.sh
}
function configfile(){
cd ${installdir}/${cluster_name}
pathdir=`pwd`
cd ${installdir}/${cluster_name}/conf
#后台
sed -i 's/daemonize no/daemonize yes/' ${confile1} && sed -i 's/daemonize no/daemonize yes/' ${confile2}
#端口
sed -i 's/port 6379/port 7001/' ${confile1} && sed -i 's/port 6379/port 7002/' ${confile2}
#日志输出文件
logpath && logpath2
#开启集群
sed -i 's/# cluster-enabled yes/cluster-enabled yes/' ${confile1} && sed -i 's/# cluster-enabled yes/cluster-enabled yes/' ${confile2}
#集群数据文件
clusterconf && clusterconf2
}
function logpath(){
cd ${installdir}/${cluster_name}
pathdir=`pwd`
cd ${installdir}/${cluster_name}/conf
logfileold=`cat "${confile1}" | grep logfile | awk -F '"' '{print$2}'`
logfilenew=${pathdir}/logs/${logfile1}
if [ ! $logfileold ];then
echo "is null"
echo "start add data"
sed -i 's/logfile ""/logfile "judgement"/' ${confile1}
logfileold=`cat "${confile1}" | grep logfile | awk -F '"' '{print$2}'`
if [ ! $logfileold ];then
echo "is null"
else
echo "not null"
sed -i "s|$logfileold|$logfilenew|g" ${confile1}
fi
sed -i "s|$logfileold|$logfilenew|g" ${confile1}
else
echo "not null"
echo "start add data"
sed -i "s|$logfileold|$logfilenew|g" ${confile1}
fi
}
function logpath2(){
cd ${installdir}/${cluster_name}
pathdir=`pwd`
cd ${installdir}/${cluster_name}/conf
logfileold=`cat "${confile2}" | grep logfile | awk -F '"' '{print$2}'`
logfilenew=${pathdir}/logs/${logfile2}
if [ ! $logfileold ];then
echo "is null"
echo "start add data"
sed -i 's/logfile ""/logfile "judgement"/' ${confile2}
logfileold=`cat "${confile2}" | grep logfile | awk -F '"' '{print$2}'`
if [ ! $logfileold ];then
echo "is null"
else
echo "not null"
sed -i "s|$logfileold|$logfilenew|g" ${confile2}
fi
sed -i "s|$logfileold|$logfilenew|g" ${confile2}
else
echo "not null"
echo "start add data"
sed -i "s|$logfileold|$logfilenew|g" ${confile2}
fi
}
function clusterconf(){
cd ${installdir}/${cluster_name}
pathdir=`pwd`
cd ${installdir}/${cluster_name}/conf clusternumber=`cat -n ${confile1} | grep cluster-config-file | awk '{print$1}' | head -n 1`
clusterconfnew="cluster-config-file ${pathdir}/nodes/${nodes1}"
clusterNM=`cat -n ${confile1} | grep cluster-config-file | grep -v '#' | wc -l`
if [ ${clusterNM} -ge 1 ];then
number=`cat -n ${confile1} | grep cluster-config-file | grep -v '#' | awk '{print$1}' | head -n 1`
sed -i "${number}d" ${confile1}
else
sed -i "${clusternumber}i ${clusterconfnew}" ${confile1}
fi
}
function clusterconf2(){
cd ${installdir}/${cluster_name}
pathdir=`pwd`
cd ${installdir}/${cluster_name}/conf clusternumber=`cat -n ${confile2} | grep cluster-config-file | awk '{print$1}' | head -n 1`
clusterconfnew="cluster-config-file ${pathdir}/nodes/${nodes2}"
clusterNM=`cat -n ${confile2} | grep cluster-config-file | grep -v '#' | wc -l`
if [ ${clusterNM} -ge 1 ];then
number=`cat -n ${confile2} | grep cluster-config-file | grep -v '#' | awk '{print$1}' | head -n 1`
sed -i "${number}d" ${confile2}
else
sed -i "${clusternumber}i ${clusterconfnew}" ${confile2}
fi
}
function main(){
checkroot
judge
}
main

  

shell脚本一键安装redis集群的更多相关文章

  1. shell脚本一键安装redis集群[最终版]

    直接上shell了. #!/bin/bash #---------------------------------------------------------------------------- ...

  2. 编写shell脚本一键启动zookeeper集群!!

    踩了一个多小时坑终于解决了: 这里分享给大家,更主要的目的是记住这些坑,避免以后重复走!!! 首先,这里采用ssh秘钥方式进行集群主机之间免密登录执行启动命令 这里简单说下原理: 通过ssh去另外一台 ...

  3. shell脚本一键安装redis

    支持识别离线包和联网安装,自动修改使用后台运行模式,离线安装的方法是,将离线包和脚本放在同一个文件夹, 它会先识别有没有离线包, 有离线包就先安装离线包, 没有离线包就安装进行判断机器是否能联网, 能 ...

  4. liunx contos 7.4 安装redis集群

    前前后后安装了几次redis集群,基本上每次安装都会采坑,耗时伤神. 安装redis依赖gcc环境,安装前先检查liunx上面有没有安装GCC 命令:gcc -v 上传redis-4.0.1.tar. ...

  5. 从零开始安装Redis 集群(Linux CenOS7)

    从零开始安装Redis 集群(Linux CenOS7) 使用ISO安装CentOS7虚拟机 配置静态IP(参考Mac VMware Fusion CentOS7配置静态IP) 安装vim [root ...

  6. centos7.0 安装redis集群

    生产环境下redis基本上都是用的集群,毕竟单机版随时都可能挂掉,风险太大.这里我就来搭建一个基本的redis集群,功能够用但是还需要完善,当然如果有钱可以去阿里云买云数据库Redis版的,那个还是很 ...

  7. Centos 6.4上面用Shell脚本一键安装vsftpd

    Centos 6.4上面用Shell脚本一键安装vsftpd install.sh #!/bin/bash if [ `uname -m` == "x86_64" ];then m ...

  8. Centos 6.4上面用Shell脚本一键安装mysql 5.6.15

    Centos 6.4上面用Shell脚本一键安装mysql 5.6.15  #!/bin/bash if [ `uname -m` == "x86_64" ];then machi ...

  9. 安装完Ubuntu后通过shell脚本一键安装软件

    安装完Ubuntu后通过shell脚本一键安装软件 以下代码中#是单行注释 :<<! ! 是多行注释. 运行的时候需要把多行注释去掉. 比如把以下代码保存为install.sh, 那么在终 ...

随机推荐

  1. gdb强制生成core文件

    如何为自己的进程产生core 文件,又不想退出这个进程? 系统只在程序崩溃退出时自动产生core file. 有的人像自己处理异常信号,然后自己产生一个core file,然后继续运行.那该怎么办呢? ...

  2. UGUI之Slider使用,制作血条

    用Slider来控制Cube旋转 Slider是滑动条.

  3. react结合redux开发

    先加上我码云的地址:https://gitee.com/ldlx/react_and_rudex

  4. 002-一般处理程序(HttpHandler)

    一般处理程序(HttpHandler):是一个实现System.Web.IHttpHandler接口的特殊类.任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提.(凡是 ...

  5. 加快cin读取速度

    cin在读取大量数据时会比C里的scanf慢很多,但这并不是cin"无能",而是C++为了兼容C,对cin做了scanf的同步,只要关闭这个同步,cin就会有不弱于scanf的速度 ...

  6. [7] Windows内核情景分析---线程同步

    基于同步对象的等待.唤醒机制: 一个线程可以等待一个对象或多个对象而进入等待状态(也叫睡眠状态),另一个线程可以触发那个等待对象,唤醒在那个对象上等待的所有线程. 一个线程可以等待一个对象或多个对象, ...

  7. Windows 下VC++6.0制作、使用动态库和静态库

    Windows 下VC++6.0制作.使用动态库和静态库 一.VC++6.0制作.使用静态库 静态库制作 1.如图一在VC++6.0中new一个的为win32 static library工程并新建一 ...

  8. .net 学习笔记2

      托管代码.非托管代码 语法糖: 写C#代码时,遵守简单的语法.编译时编译器将简单的写法编译成正式的复杂的写法. 如: 上面简写了方法,编译时编译器帮助生成完整的代码   Var 关键字指示 编译器 ...

  9. 设置Source Insight显示格式

    调整字体大小 默认的忍不了,百度之,解决方案如下:1.Document Options -> Screen Fonts -> 字体设置为新宋体(等宽)或者其他支持中文的字体,字符集选GB2 ...

  10. flask 文件上传(单文件上传、多文件上传)

    文件上传 在HTML中,渲染一个文件上传字段只需要将<input>标签的type属性设为file,即<input type=”file”>. 这会在浏览器中渲染成一个文件上传字 ...