通过SSH远程执行的循环

时间:2019-01-28 13:54:18

标签: bash shell for-loop ssh

我有一个简单的.sh文件,它控制服务器的空白空间。如果使用率超过90%,则仅显示红线,超过50%则显示黄线。我有300多个远程服务器,我想通过ssh连接运行.sh文件,但是我遇到了问题。在.sh文件中建立ssh连接后,无法执行for循环命令。这是下面的代码;

#!/bin/bash
TXT_BLD=$(tput bold)
TXT_RED=$(tput setaf 1)
TXT_YLW=$(tput setaf 3)
TXT_WARN="${TXT_BLD}${TXT_YLW}"
TXT_ERR="${TXT_BLD}${TXT_RED}"
TXT_RST=$(tput sgr0)
IFS= mapfile -t disk < <(df -h | tail -n +2)



for i in {01..21}; do
    for j in {01..15}; do
    ssh bc$i-$j  
    hostname="$(hostname)"
    echo "#######${hostname}#######"
    IFS= mapfile -t disk < <(df -h | tail -n +2)
    for line in "${disk[@]}"; do
        USAGE=$(echo $line | awk '{print $5/1}')
        if [[ "$USAGE" -gt '90' ]]; then
            echo "${TXT_ERR}$line${TXT_RST}"
        elif [[ "$USAGE" -gt '50' ]]; then
            echo "${TXT_WARN}$line${TXT_RST}"
        else
            echo "$line"
        fi
    done
    done
done

如果您告诉我我的不足之处,我会很高兴

thx

0 个答案:

没有答案