Когда я запускаю этот скрипт на 2 серверах в именах хостов, он преуспевает в одном из них, но не на другом.Запуск сценария на удаленном сервере в bash, работающем на 1 сервере, а не на другом
Выход журнала довольно уродлив, поэтому я не буду публиковать его все. Вот часть 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
Что вы подразумеваете под словом «он выполняется по строкам на сервере, в котором он не работает».? Если он выполняется двумя разными способами, вы должны указать, чтобы они могли отлаживать ситуацию. – l0b0
Какая ошибка? – banuj