获取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死链给百度
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...
随机推荐
- Andriod Studio科普篇——4.关于编译的常见问题
1.android支持库未安装 编译不过,提示如下: Could not find any version that matches com.android.support:appcompat-v7: ...
- python 访问 zookeeper
python 访问 zookeeper zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同 ...
- (八十一)利用系统自带App来实现导航
利用系统的地图App进行导航,只需要传入起点和终点.启动参数,调用MKMapItem的类方法openMapWithItems:launchOptions:来实现定位,调用此方法后会打开系统的地图App ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 打开SpriteBuilder,在文件视图中新建一个文件夹Fon ...
- Android进阶(二十三)Android开发过程之实例讲解
Android开发过程之实例讲解 前言 回过头来审视之前做过的Android项目,发觉自己重新开发时忽然间不知所措了,间隔了太长时间没有开发导致自己的Android技能知识急剧下降.温故而知新. 废话 ...
- 利用Dijkstra算法实现记录每个结点的所有最短路径
最近在做PAT时发现图论的一些题目需要对多条最短路径进行筛选,一个直接的解决办法是在发现最短路径的时候就进行判断,选出是否更换路径:另一个通用的方法是先把所有的最短路径记录下来,然后逐个判断.前者具有 ...
- ADFS3.0 Customizing the AD FS Sign-in Pages
Windows Server2012R2自带的adfs是3.0的版本,不同于以前的版本的是3.0中登陆页面的定制化全部是通过powershell指令实现,官方的介绍链接如下:http://techne ...
- Cocos2D:塔防游戏制作之旅(十一)
是时候放一些坏家伙来搅合一下了! 打开HelloWorldLayer.h并且添加以下代码: // Add these instance variables int wave; CCLabelBMFon ...
- Flexbox布局指南
Flexbox布局概念 Flexbox布局( Flexible Box 或CSS3 弹性布局),是CSS3中的一种新的布局模式,是可以自动调整子元素的高和宽,来很好的填充任何不同屏幕大小的显示设备中的 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(七)
因为我们之前在GameScene中建立的2个数组,分别为player和label的数组.大家可以注意到其中每个元素是一一对应的. 知道了这层关系,我们尝试来更新matchRun方法: CCAction ...