2013-06-13 3 views
0

Когда я запускаю этот скрипт на 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 
+0

Что вы подразумеваете под словом «он выполняется по строкам на сервере, в котором он не работает».? Если он выполняется двумя разными способами, вы должны указать, чтобы они могли отлаживать ситуацию. – l0b0

+0

Какая ошибка? – banuj

ответ

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 

Просто убедитесь, что вы не застряли на одном сервере.

Смежные вопросы