[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 求助:shell监控mysql主从复制状态异常

流程如下:getpass.py 后面跟实例id  可以获取到数据库连接信息 ,比如1027实例 获取到的信息:mysql -uc2n -p"xmjbmns" -h10.126.1.2 -P3306,但是在shell里
sh -x mysql_check.sh 结果如下,不明白为啥在密码哪里多了一对单引号 '-p"xmjbmns"'  导致无法连接数据库,请问如何去掉
  1. #!/bin/bash
  2. instance="1027"
  3. Date=`date +'%Y-%m-%d %H:%M:%S'`
  4. mail_log=/tmp/mysql.log
  5. slave=`python /opt/monitorAPI/model/getpass.py $instance |grep -E -A 1 'Slave:'|grep mysql`
  6. declare -a slave_status
  7. slave_status=($($slave -e "show slave status\G"|grep Running |awk '{print $2}'))
  8. if [ "${slave_status[0]}" = "Yes" -a "${slave_status[1]}" = "Yes" ]
  9.      then
  10.      echo "OK slave is running"
  11.      exit 0
  12. else
  13.     error=1
  14.     echo ""$Date"  slave  mysql "$i" error" >>"$mail_log"
  15. fi
复制代码
[root@zz-001 ~]# sh -x  mysql_check.sh
+ instance=1023
++ date '+%Y-%m-%d %H:%M:%S'
+ Date='2020-04-07 15:53:42'
+ mail_log=/tmp/mysql.log
++ python /opt/monitorAPI/model/getpass.py 1023
++ grep -E -A 1 Slave:
++ grep mysql
+ slave='mysql -uc2n -p"xmjbmns" -h10.126.1.2 -P3306'
+ echo mysql -uc2n '-p"xmjbmns"' -h10.126.1.2 -P3306
mysql -uc2n -p"xmjbmns" -h10.126.1.2 -P3306
+ declare -a slave_status
+ slave_status=($($slave -e "show slave status\G"|grep Running |awk '{print $2}'))
++ mysql -uc2n '-p"xmjbmns"' -h10.126.1.2 -P3306 -e 'show slave status\G'
++ grep Running
++ awk '{print $2}'
ERROR 1045 (28000): Access denied for user 'c2n'@'10.126.1.2' (using password: YES)

回复 1# 692568516


请把 python /opt/monitorAPI/model/getpass.py $instance 的执行结果发出来看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

[root@zz-001 ~]# getpass 5286
Socket:
mysql -uc2n -p"xmjbmn" -S /tmp/mysql5286.sock
Master:
mysql -uc2n -p"xmjbmn" -h10.126.1.1 -P3306
Slave:
mysql -uc2n -p"xmjbmn" -h10.126.1.2 -P3306
[/code]

TOP

找到问题了测试 在shell中反引号·· 会对命令结果中的单引号,双引号进行转义
我在结果中吧双引号给sed掉,然后就可以了
slave=`python /opt/monitorAPI/model/getpass.py $i |grep -E -A 1 'Slave:'|grep mysql|sed 's/"//g'`

TOP

回复 4# 692568516


    反单引号遇到某些特殊字符会出问题,建议尽量使用 $()
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

试了$() 也不行,奇了怪了  没办法只有在结果里吧引号sed掉了

TOP

返回列表