在bash中的远程服务器上运行脚本,在1台服务器上运行,而不是在另一台服务器上运行

在bash中的远程服务器上运行脚本,在1台服务器上运行,而不是在另一台服务器上运行,bash,shell,scripting,Bash,Shell,Scripting,当我以主机名在两台服务器上运行此脚本时,它会在其中一台服务器上成功,但在另一台服务器上不会成功 日志输出非常难看,所以我不会全部发布。这是bash_历史的一部分,它还为fi bash提供了一个语法错误:意外标记'fi'附近的语法错误,因为它正在发生故障的服务器上逐行执行 两台服务器具有相同版本的Bash: bash --version GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10) Copyright (C) 2004 F

当我以主机名在两台服务器上运行此脚本时,它会在其中一台服务器上成功,但在另一台服务器上不会成功

日志输出非常难看,所以我不会全部发布。这是bash_历史的一部分,它还为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

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

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
filename=主机名
>export.log
而read-r-a行
做
主机名=${line/\“}
echo$hostname:“>>export.log
ssh-t-t$hostname“bash-s”>export.log&
完成<“$filename”
出口
只是为了确保您不会被困在一台服务器上。

您所说的“它在服务器上逐行执行,但它在服务器上出现故障”是什么意思?如果它以两种不同的方式执行,您必须指出这两种方式才能调试情况。
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