获取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. EBS密码加密研究

     DECLARE   v_password_1 VARCHAR2(240);   v_password_2 VARCHAR2(240);   v_password_3 VARCHAR2(240); ...

  2. Android实现登录小demo

    安卓,在小编实习之前的那段岁月里面,小编都没有玩儿过,如果说玩儿过,那就是安卓手机了,咳咳,敲登录的时候有种特别久违的熟悉,这种熟悉的感觉就和当时敲机房收费系统一样,那叫一个艰难啊,不过小编相信,在小 ...

  3. UNIX网络编程——socket概述和字节序、地址转换函数

    一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口.socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网络 ...

  4. Xcode中Groups和Folder的区别

    以前一直没有在意这个问题,今天"中奖"了 ;( 在Xcode文件夹视图中会发现2种颜色的文件夹图标:黄色和蓝色. 黄色表示组(groups),蓝色表示文件夹(folder). 组只 ...

  5. 纯HTML5APP与原生APP的差距在哪?

    笔者写过一些纯H5的APP,虽然开发起来的确很快很舒服,但和原生比起来纯H5APP还是有很多问题,主要聚集在以下几个方面: 1.动画 动画有很多种,比如侧边栏菜单的滑入滑出.元素的响应动画.页面切换之 ...

  6. Web Service进阶(六)SOAPBinding绑定方式异常 is not found. Have you run APT to generate them

    当在类中填充相应方法时,提示如下错误: 出现以上错误的原因就是在注解中没有添加@SOAPBinding(style=SOAPBinding.Style.RPC)这句话.估计也与JDK的版本相关,这方面 ...

  7. Mybatis接口编程原理分析(一)

    Mybatis接口编程示例 (1)首先定义接口编程需要的接口及其方法 public interface IUserMapper { public User getById(int id);//接口方法 ...

  8. sql中with的用法(CTE公用表表达式):应用子查询嵌套,提高sql性能

    一.WITH AS的含义 WITH AS短语,也叫子查询部分(subquery factoring),定义一个SQL片断,该片断会被整个SQL语句所用到. 有时是为了让SQL语句的可读性更高些,也可能 ...

  9. javascript之数组对象与数组常用方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 简约才是王道? CardView 的使用

    发现个好看的东东 CardView,他在support v7包中~~ 顾名思义就是卡片view,可以设置阴影,圆角,等等.. 样子是这样的: 或者你还可以放到listview里 是这样的: http: ...