天天看點

[Linux基礎]-- 本機遠端執行指令,檢視其他機器的檔案内容或者檔案夾内容

1、本機機器上有hosts檔案

2、編寫實作語句實作檢視其他機器的檔案目錄如下:

#for i in `cat /etc/hosts`; do echo $i; ssh $i "ls /etc/"; done      
[Linux基礎]-- 本機遠端執行指令,檢視其他機器的檔案内容或者檔案夾内容

其他:如果想要看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