循环脚本,重定向到文件

时间:2018-05-18 14:22:55

标签: linux bash shell loops output

所以我有这个BASH脚本,我想做的是,伸手去拿服务器。检查目录的已用百分比。如果它高于我设置的阈值(90),则将该服务器名称打印到运行脚本的服务器上的另一个文件。

它正在做的是将第一个服务器名称两次打印到文件中,使其看起来像

server1
server2

这是我的脚本......我不明白为什么它会循环到第一台服务器两次

#!/bin/bash

SERVERS="server1
server2"

for i in $SERVERS; do

        ssh $SERVERS "
        df -h | grep var | awk '{print \$4}' | sed 's/%//g' > /home/user/space.txt
        RESULTS=\$(grep -E "1[5-9]" /home/user/space.txt)
        THRESHOLD=90
        if [[ \$RESULTS -lt \$THRESHOLD ]]; then
        exit 1;
        elif [[ \$RESULTS -gt \$THRESHOLD ]]; then
        hostname;
        fi
        " >> /home/user/problem.txt
done

1 个答案:

答案 0 :(得分:0)

试试这个,

#!/bin/bash

SERVERS="server1
 server2"

for i in $SERVERS; do

    ssh "$i" "
    df -h | grep var | awk '{print \$4}' | sed 's/%//g' > /home/user/space.txt
    RESULTS=\$(grep -E "1[5-9]" /home/user/space.txt)
    THRESHOLD=90
    if [[ \$RESULTS -lt \$THRESHOLD ]]; then
    exit 1;
    elif [[ \$RESULTS -gt \$THRESHOLD ]]; then
    hostname;
fi
    " >> /home/user/problem.txt
done