获取redis主从复制链SHELL脚本
获取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脚本的更多相关文章
- centos下的redis一键安装shell脚本
#!/bin/bash yum install cpp binutils glibc-kernheaders glibc-common glibc-devel gcc make wget #安装依赖库 ...
- 数据库MySQL、redis主从切换shell脚本
具体源码可找我领取
- 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址
1.获取硬盘序列号: 新建shell脚本文件: identifier.sh, 内容为: diskdata=`fdisk -l` diskleft=${diskdata#*"identifie ...
- 014-交互式Shell和shell脚本获取进程 pid
Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...
- Linux运维之shell脚本
一.bash漏洞 1)bash漏洞 bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞. bash是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Agai ...
- shell脚本特殊变量与变量子串相关知识
一.shell脚本特殊变量 1.shell中常用特殊位置变量说明: $0 获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包含了脚本路径 $n 获取当前执行的shell脚本的第n个 ...
- shell脚本部署redis以及redis主从复制和redis-cluster集群
# 关于脚本: # 使用root用户执行此脚本,提前关闭selinux: # 执行脚本之前,hostsIP内的IP修改成自己的机器IP: # hostsIp内的IP数量如果有增加或者减少,for循环的 ...
- Apache下通过shell脚本提交网站404死链
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...
- 利用shell脚本批量提交网站404死链给百度
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...
随机推荐
- 如何解决RK3168或者RK系列MASKROM的问题
不知道使用RK芯片的小伙伴有没有遇到我这样的问题,在用Android-Tool下载相应 IMG的时候,正常情况下,按电源键和音量+键应该出现loader下载模式,但是却出现MASKROM的字样,以前不 ...
- 【一天一道LeetCode】#108. Convert Sorted Array to Binary Search Tree
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- Windows2003下用Dreamweaver打开CodeSmith文件设置办法
.在第一行的ASP,字符串后面添加CST,2.找到行ASP,ASA:ActiveServer Pages修改为ASP,ASA,CST:ActiveServer Pages 二.用记事本打开文件2:C: ...
- 管道模式——pipeline与valve
在一个比较复杂的大型系统中,假如存在某个对象或数据流需要被进行繁杂的逻辑处理的话,我们可以选择在一个大的组件中进行这些繁杂的逻辑处理,这种方式确实达到了目的,但却是简单粗暴的.或许在某些情况这种简单粗 ...
- javascript之prototype原型属性
这个地方有点绕,仔细理解代码的意义. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- javascript语法之number对象和Math对象
这两个对象很简单,一个例子就能掌握用法. 一:number对象. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...
- 迭代器模式之看芒果台还是央视nie?
"大风车吱呀吱悠悠的转,这里的风景啊真好看,天好看,地好看,还有一群快乐的小伙伴,大风车转呀转悠悠,快乐的伙伴手牵着手,牵着你的手,牵着我的手......"童年的美好时光因为有了& ...
- 认识 SurfaceView
SurfaceView是基于View视图进行扩展的视图类,适用于2D游戏开发,主要特点有: [1]surfaceView中对于画布的重绘是由一个新的线程去绘制,因此可以处理一些耗时的操作 [2]sur ...
- opencv读写视频,对感兴趣区域进行裁剪
作为小码农,本人最近想对一段视频的某个区域进行处理,因此要将该段视频区域裁剪出来,搜搜网上,发现没有痕迹,是故自己琢磨一下,左右借鉴,编了如下代码,目标得以实现,希望对你有用. #include &q ...
- Android万能的指示器
说到 ViewPager 指示器,想必大家都不陌生,绝大部分应用中都有这个.使用频率非常之高.但系统对它的支持并不好,自带的 PagerTabStrip 和 PagerTitleStrip 太弱,很难 ...