建立单个ssh连接而不是多个连接

时间:2014-03-28 13:36:54

标签: shell unix scripting

目前,这是我的代码的外观。我不想每次都重新连接到远程主机来检查文件,我宁愿只进行一次连接,搜索所有文件然后退出。这方面的任何帮助都会有用!

    for file in $FILE_LIST

    do

    FILE=`echo $file | cut -f1 -d"~"`

    FILENAME=$FILE$YYYYMM

    if ssh username@servername test -e some/directory/location/"$FILE$YYYYMM"*; then

    echo "SUCCESS"

    else

    echo "FAILURE"

    fi

    done

1 个答案:

答案 0 :(得分:0)

示例代码。

这会在第一个循环中生成您的文件名列表,并将所有名称都输入到一个SSH调用中。

SSH远程执行一个循环,该循环读取每个文件名并返回SUCCESS或FAILURE。

我已在成功/失败消息中包含了文件名,但如果您只是在查看是否存在失败条件,则可能不需要。

for file in $FILE_LIST

do

    FILE=`echo $file | cut -f1 -d"~"`

    echo $FILE$YYYYMM
done | ssh username@servername "
           while read file
           do
              if test -e some/directory/location/\"\$file\"
              then
                 echo \$file:SUCCESS
              else
                 echo \$file:FAILURE
              fi
          done"

请记住小心引号和美元符号。将它们全部转义,因为它们必须在远程主机上进行评估。