当我在主机名中的 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