一,背景介绍:
此脚本产生的原因,由于公司不让开发人员自己修改数据库,因此开发需要将修改的sql语句发给运维,而公司数据库很多,平台有三个,测试平台,预发布平台,正式平台。脚本就是这种状态下产生的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#!/bin/bash
###install expect###
if
! rpm -qa |grep expect &>/dev/
null
;then
sudo yum -y install expect
fi
####put sql file to server################
put_file() {
expect << EOF
spawn scp alter.sql $user@$host:/tmp
expect {
"*yes/no*"
{send
"yes\n"
; exp_continue}
"*password:"
{send
"$passwd\n"
;exp_continue}
eof {
exit
}
}
EOF
}
#########alter database###############
alter() {
expect << EOF
spawn ssh $user@$host
"/usr/local/mysql/bin/mysql -uroot -p$mysqlpw $db < /tmp/alter.sql"
expect {
"*yes/no*"
{send
"yes\n"
; exp_continue}
"*password:"
{send
"$passwd\n"
;exp_continue}
eof {
exit
}
}
EOF
}
########### $
1
platform,$
2
database#####
svn co http:
//svn.yeezhao.com/svn/project/active-mkt/operation/conf/
for
c
in
`ls conf`;
do
for
i
in
`ls conf/$c |sed -n
"/$1\.cfg$/p"
`;
do
host=`grep mysql conf/$c/$i |grep $
2
|awk -F /
'{print $3}'
|awk -F :
'{print $1}'
`
#echo $host
if
[ ! $host =
""
];then
if
[ $host = $(cat host.txt |grep $host |awk
'{print $1}'
) ];then
user=`cat host.txt|grep $host|awk
'{print $2}'
`
passwd=`cat host.txt|grep $host|awk
'{print $3}'
`
mysqlpw=`cat host.txt|grep $host|awk
'{print $4}'
`
db=$
2
put_file
alter
fi
fi
done
done
|
二,脚本注释:
1,host.txt文件格式:第一列需要连接主机,第二列用户名,第三列密码,第四列mysql的root密码,mysql root用户只能在本地登录。
192.168.1.122 summba summba summba
d02.yeezhao.com summba 123456 123456
d04.yeezhao.com summba 123456 123456
2,脚本中的host需要先从svn中的config中获取,程序连接数据库都去zk中获取用户名与密码。
3,脚本运行:
sh run.sh -d db_yeezhao_owl
4,各位主要需要学习expect这部分,后一部分需要根据自己的需求来改。
本文转自 deng304749970 51CTO博客,原文链接:http://blog.51cto.com/damondeng/1388940,如需转载请自行联系原作者