0

当我在主机名中的 2 台服务器上运行此脚本时,它在其中一台服务器上成功,但在另一台服务器上失败。

日志输出非常难看,所以我不会全部发布。这是 bash_history 的一部分,它还给出了 fi bash 的语法错误:意外标记 `fi' 附近的语法错误,因为它在失败的服务器上逐行执行。

两台服务器都有相同版本的 Bash:

bash --version
GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10)
Copyright (C) 2004 Free Software Foundation, Inc.

运行.sh

#!/bin/bash
# See if registry is set to expire updates
# Master script

filename=hostnames
> export.log

while read -r -a line
do
        hostname=${line//\"}
        echo $hostname":" >> export.log
        ssh -t -t $hostname "bash -s" < script.sh >> export.log
done < "$filename"

exit

脚本.sh

#!/bin/bash
# See if registry is set to expire updates
# Execution script

PATH=/usr/xpg4/bin:$PATH
PARAMETER=Updates
FILE=/etc/.properties

# Code must:
# - Check if FILE exists
# - If the file exists, check if the parameter Updates is set
# - If not set, set to 30.

if [ -f $FILE ];
        then if grep -q $PARAMETER $FILE;
                then echo "File found, parameter already added."
        else
                echo "File found, parameter not found."
                echo "Updates 30" | sudo tee -a $FILE
        fi
else
        echo "File not found."
fi

exit
4

1 回答 1

0

这只是一个猜测,但我会试试这个

filename=hostnames
> export.log

while read -r -a line
do
    hostname=${line//\"}
    echo $hostname":" >> export.log
    ssh -t -t $hostname "bash -s" < script.sh >> export.log &
done < "$filename"

exit

只是为了确保您不会卡在一台服务器上。

于 2013-06-13T14:44:37.163 回答