之前写过shell脚本连接一个主机上的数据库并进行查询,也成功了,现在要写连接多个主机的数据库并执行查询语句,试了好多次都不行。
解决了。
在shell脚本同目录建一个文件,将需要访问的ip输入进去。
for i in $(cat host);
do
echo $i
mysql_u="数据库用户名"
mysql_p="数据库密码"
save_f="mysql.txt"
save_p="/usr/"
mysql_sq1="SELECT count(*) as "007未上传数量",xhdwdm from PJ_ZZSP_FPMX WHERE KPRQ >'date_sub(date_sub(now()),interval extract(day from now())-1 day),interval 1 month)' and KPRQ <'date_add(now(),interval 3 hour)' and SCBZ='0' GROUP BY XHDWDM;
SELECT count(*) as "004未上传数量",xhdwdm from PJ_ZZSz_FPMX WHERE KPRQ >'date_sub(date_sub(now()),interval extract(day from now())-1 day),interval 1 month)' and KPRQ <'date_add(now(),interval 3 hour)' and SCBZ='0' GROUP BY XHDWDM;
SELECT count(*) as "电票",xhdwdm from PJ_ZZSPdz_FPMX WHERE KPRQ >'date_sub(date_sub(now()),interval extract(day from now())-1 day),interval 1 month)' and KPRQ <'date_add(now(),interval 3 hour)' and SCBZ='0' GROUP BY XHDWDM"
time=$(date "+%Y-%m-%d %H:%M:%S");
echo ”连接数据库"
# 2.连接数据库
result=`mysql -h$i -u$mysql_u -p$mysql_p << EOF
use skdata;
$mysql_sq1;
quit
EOF`
# 判断是否连接成功
if [ $? = 0 ]
then
echo "连接成功"
else
echo "连接失败”
fi
echo "写入查询结果"
# 将结果写入文本
echo "$i 的查询结果是
$result $time" >> $save_p$save_f
echo "完成"
done
stop