获取redis主从复制链SHELL脚本

vi redisnode.sh

#!/bin/sh
master_host=$
master_port=$
auth=$ #判断输入密码是否为空,为空则转化为''
if test ! -n "$auth" -o $# -lt
then
#echo " PASSWD IS NULL"
auth='\"\"'
fi #把所有节点格式化保存到一个参数all_note
all_note=''
#获取redis 的master节点
function get_redis_master
{
master_host=$master_host
master_port=$master_port
count=
while test $count -lt
do
#判断输入的节点是否存在
comm="/usr/local/redis/bin/redis-cli -h $master_host -p $master_port -a $auth "
redis_exist=`echo "INFO Replication"| $comm |wc -l >/dev/null`
if [ $redis_exist -eq ];then
echo " $master_host:$master_port redis not exists or passwd error!"
master_host=''
master_port=''
break
fi
echo "INFO Replication" |$comm |grep -q "role:master"
if test X"$?" == X"" ;then
break
fi
comm="/usr/local/redis/bin/redis-cli -h $master_host -p $master_port -a $auth "
master_host=`echo "INFO Replication" |$comm |grep "master_host"|cut -d: -f2 |sed 's/\r//g'`
master_port=`echo "INFO Replication" |$comm |grep "master_port"|cut -d: -f2 |sed 's/\r//g'`
count=$((count+))
done
all_note="${master_host}:${master_port}"
#打印主节点
echo "MASTER NOTE: ${master_host}:${master_port} "
} #获取给定节点的从节点
function get_redis_slave
{
master_host=$
master_port=$
comm="/usr/local/redis/bin/redis-cli -h $master_host -p $master_port -a $auth "
slave_host=`echo "info Replication" | $comm |grep -Ei slave.:ip|awk -F= '{print $2,$3}' |awk -F, '{print $1,$2}'|awk '{print $1":"$3 }'|awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}'`
} #获取给定节点的所有复制链
function get_all_redis_slave
{
master_host=$master_host
master_port=$master_port
count= all_host=$master_host:$master_port
while test $count -lt
do
condition=`echo $all_host |sed 's/ //g'`
if test ! -n "$condition" ;then
break
fi
for line in $all_host
do
tmpline=$tmpline" "$line
master_host=`echo $line |awk -F: '{print $1}'`
master_port=`echo $line |awk -F: '{print $2}'`
get_redis_slave $master_host $master_port
all_host=`echo $all_host |sed "s/$line//g"`
all_host=$slave_host" "$all_host
done
all_host=`echo $all_host |sed "s/^ //g"`
condition=`echo $all_host |sed 's/ //g'`
if test ! -n "$condition" ;then
#echo ""
break
fi
#分行分级打印节点
echo "The ${count}TH NODE: $all_host "
#一行打印所有节点
all_note="$all_note $all_host"
count=$(($count+))
done
}
get_redis_master
get_all_redis_slave

sh  redisnode.sh  ip port password 
有密码的redis要求密码主从一致。

获取redis主从复制链SHELL脚本的更多相关文章

  1. centos下的redis一键安装shell脚本

    #!/bin/bash yum install cpp binutils glibc-kernheaders glibc-common glibc-devel gcc make wget #安装依赖库 ...

  2. 数据库MySQL、redis主从切换shell脚本

    具体源码可找我领取

  3. 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址

    1.获取硬盘序列号: 新建shell脚本文件: identifier.sh, 内容为: diskdata=`fdisk -l` diskleft=${diskdata#*"identifie ...

  4. 014-交互式Shell和shell脚本获取进程 pid

    Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...

  5. Linux运维之shell脚本

    一.bash漏洞 1)bash漏洞 bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞. bash是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Agai ...

  6. shell脚本特殊变量与变量子串相关知识

    一.shell脚本特殊变量 1.shell中常用特殊位置变量说明: $0 获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包含了脚本路径 $n 获取当前执行的shell脚本的第n个 ...

  7. shell脚本部署redis以及redis主从复制和redis-cluster集群

    # 关于脚本: # 使用root用户执行此脚本,提前关闭selinux: # 执行脚本之前,hostsIP内的IP修改成自己的机器IP: # hostsIp内的IP数量如果有增加或者减少,for循环的 ...

  8. Apache下通过shell脚本提交网站404死链

    网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...

  9. 利用shell脚本批量提交网站404死链给百度

    网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...

随机推荐

  1. Web Service进阶(七)浅谈SOAP Webservice和RESTful Webservice

    浅谈SOAP Webservice和RESTful Webservice REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性.RE ...

  2. Android性能优化之常见的内存泄漏

    前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary.MAT等工具来检 ...

  3. Java 8新特性探究(二)类型注解和重复注解

    本文将介绍java 8的第二个特性:类型注解. 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置.那充满争议的类型注解究竟是什 ...

  4. android sensor架构

    Android Sensor 架构深入剖析 作者:倪键树,华清远见嵌入式学院讲师. 1.Android sensor架构 Android4.0系统内置对传感器的支持达13种,它们分别是:加速度传感器 ...

  5. cd 命令的具体使用说明

    cd 命令的具体使用说明

  6. Linux Debugging(一): 使用反汇编理解C++程序函数调用栈

    拿到CoreDump后,如果看到的地址都是????,那么基本上可以确定,程序的栈被破坏掉了.GDB也是使用函数的调用栈去还原"事故现场"的.因此理解函数调用栈,是使用GDB进行现场 ...

  7. 小强的HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)

    来自:http://blog.csdn.net/dawanganban/article/details/18218701 一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedO ...

  8. 【leetcode80】Reverse Vowels of a String(元音字母倒叙)

    题目描述: 写一个函数,实现输入一个字符串,然后把其中的元音字母倒叙 注意 元音字母包含大小写,元音字母有五个a,e,i,o,u 原文描述: Write a function that takes a ...

  9. 自建log4cxx.sln

    log4cxx的下载包是0.10版本的,代码较旧,有些错误,应该从主干下载最新的代码. 0.10的下载包中有projects目录,内有VC6的工程文件; 还有site目录,内有vc构建的帮助文档vst ...

  10. C++大小写转换和性能

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...