1、本机机器上有hosts文件
2、编写实现语句实现查看其他机器的文件目录如下:
#for i in `cat /etc/hosts`; do echo $i; ssh $i "ls /etc/"; done
其他:如果想要看mysql的表结构,可以使用如下命令
for i in `cat /tmp/tables/tables.txt`; do echo $i ; mysqlquery your_databases "show create table $i">create_tables/$i ; done
- mysqlquery 是用户自定义的命令
- tables.txt 是表名称
- create_tables是存放表结构的目录
mysqlquery的存放目录:/usr/bin/mysqlquery
mysqlquery的内容:
#!/bin/bash
dbt=$1
sql=$2
shard=$3
declare -a dbarr
count=0
execute=1
mysql=/usr/bin/mysql
function show_help() {
echo "mysqlquery (db2016|db2017|db2018|db2019) sql statement"
exit
}
function get_value_by_key() {
key=$1
dbarr[$count]=`/usr/local/qconf/bin/qconf get_conf "/pro/$key"`
count=`expr $count + 1`
}
if [ "$dbt" == "db2016" ]; then
get_value_by_key "db2016-web.db.db2016-r.host"
get_value_by_key "db2016-web.db.db2016.port"
get_value_by_key "db2016-web.db.db2016-r.user"
get_value_by_key "db2016-web.db.db2016-r.password"
dbname="db2016"
elif [ "$dbt" == "db2017" ]; then
get_value_by_key "db2016-web.db.db2017-r.host"
get_value_by_key "db2016-web.db.db2017.port"
get_value_by_key "db2016-web.db.db2017-r.user"
get_value_by_key "db2016-web.db.db2017-r.password"
dbname="db2017"
elif [ "$dbt" == "db2018" ]; then
get_value_by_key "db2016-web.db.sms-r.host"
get_value_by_key "db2016-web.db.sms.port"
get_value_by_key "db2016-web.db.sms-r.user"
get_value_by_key "db2016-web.db.sms-r.password"
dbname="db2018"
elif [ "$dbt" == "db2019" ]; then
get_value_by_key "db2016-web.db.db2019.host"
get_value_by_key "db2016-web.db.db2019.port"
get_value_by_key "db2016-web.db.db2019.user"
get_value_by_key "db2016-web.db.db2019.password"
dbname="db2019"
elif [ "$dbt" == "db2020" ]; then
get_value_by_key "db2016-web.db.stat.host"
get_value_by_key "db2016-web.db.stat.port"
get_value_by_key "db2016-web.db.stat.user"
get_value_by_key "db2016-web.db.stat.password"
dbname="db2020"
elif [ "$dbt" == "db2021" ]; then
get_value_by_key "db2016-db2021.db.jdbc.host"
get_value_by_key "db2016-db2021.db.jdbc.port"
get_value_by_key "db2016-db2021.db.jdbc.user"
get_value_by_key "db2016-db2021.db.jdbc.pass"
dbname="db2021"
elif [ "$dbt" == "db2022" ]; then
get_value_by_key "db2016-db2021.db.jdbc.host"
get_value_by_key "db2016-db2021.db.jdbc.port"
get_value_by_key "db2016-db2022.db.jdbc.user"
get_value_by_key "db2016-db2022.db.jdbc.pass"
dbname="db2022"
elif [ "$dbt" == "oif" ]; then
get_value_by_key "acewilloif.db.oif.host"
get_value_by_key "acewilloif.db.oif.port"
get_value_by_key "acewilloif.db.oif.user"
get_value_by_key "acewilloif.db.oif.password"
dbname="oif"
else
show_help
exit
fi
if echo "$sql"|grep -iE '^delete|^update|^truncate|^insert'; then
#execute=1
#echo -n "是否执行更新或删除操作(yes / no)? : "
password="dea136e1e94d268fbc4bd206255c9f58"
if [ "$password" == "dea136e1e94d268fbc4bd206255c9f58" ]; then
#if [ "$password" == "837cb10e4df65a579019e832c3e1e272" ]; then
count=0
if [ "$dbt" == "db2016" ]; then
get_value_by_key "db2016-web.db.db2016.host"
get_value_by_key "db2016-web.db.db2016.port"
get_value_by_key "db2016-web.db.db2016.user"
get_value_by_key "db2016-web.db.db2016.password"
dbname="db2016"
elif [ "$dbt" == "db2017" ]; then
get_value_by_key "db2016-web.db.db2017.host"
get_value_by_key "db2016-web.db.db2017.port"
get_value_by_key "db2016-web.db.db2017.user"
get_value_by_key "db2016-web.db.db2017.password"
dbname="db2017"
elif [ "$dbt" == "db2018" ]; then
get_value_by_key "db2016-web.sms.db.sms.host"
get_value_by_key "db2016-web.sms.db.sms.port"
get_value_by_key "db2016-web.sms.db.sms.user"
get_value_by_key "db2016-web.sms.db.sms.password"
dbname="db2018"
elif [ "$dbt" == "db2019" ]; then
get_value_by_key "db2016-web.db.db2019.host"
get_value_by_key "db2016-web.db.db2019.port"
get_value_by_key "db2016-web.db.db2019.user"
get_value_by_key "db2016-web.db.db2019.password"
dbname="db2019"
elif [ "$dbt" == "db2020" ]; then
get_value_by_key "db2016-web.db.stat.host"
get_value_by_key "db2016-web.db.stat.port"
get_value_by_key "db2016-web.db.stat.user"
get_value_by_key "db2016-web.db.stat.password"
dbname="db2020"
elif [ "$dbt" == "db2021" ]; then
get_value_by_key "db2016-db2021.db.jdbc.host"
get_value_by_key "db2016-db2021.db.jdbc.port"
get_value_by_key "db2016-db2021.db.jdbc.user"
get_value_by_key "db2016-db2021.db.jdbc.pass"
dbname="db2021"
elif [ "$dbt" == "db2022" ]; then
get_value_by_key "db2016-db2021.db.jdbc.host"
get_value_by_key "db2016-db2021.db.jdbc.port"
get_value_by_key "db2016-db2022.db.jdbc.user"
get_value_by_key "db2016-db2022.db.jdbc.pass"
dbname="db2022"
fi
execute=1
else
echo '密码不正确,请小心执行更新或删除操作'
exit
fi
#case $input in
# yes* | Yes*)
# execute=1
#esac
fi
if [ $execute -eq 1 ]; then
echo "Execute SQL: $sql"
if [ "$shard" == "true" ]; then
for i in `seq 0 9`; do
m_dbname="${dbname}$i"
for j in `seq 0 9`; do
m_sql=`echo $sql|sed -e "s/\(from\|update\) \([a-z_0-9]\+\)/\1 \2$j/ig"`
$mysql -h${dbarr[0]} -u${dbarr[2]} -p"${dbarr[3]}" $m_dbname -e "set names utf8; $m_sql"
done
done
else
$mysql -h${dbarr[0]} -u${dbarr[2]} -p"${dbarr[3]}" $dbname -e "set names utf8; $sql"
fi
fi
注意修改库名称:db2016 、db2017、db2018、db2019、db2020、db2021和db2022