当我在主机名中的两台服务器上运行此脚本时,它会在其中一台服务器上成功,但在另一台服务器上则不成功。
日志输出非常难看,所以我不会发布所有内容。这是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.
Run.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
Script.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
答案 0 :(得分: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
只是为了确保你不会卡在一台服务器上。