[Linux基础]-- 本机远程执行命令,查看其他机器的文件内容或者文件夹内容

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事随风ing

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值