想问一下如何写一个shell脚本,这个脚本里的查询语句能够查询多个主机上的数据库?

之前写过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

https://blog.csdn.net/songxinfeng1989/article/details/105634249