0

サーバーに ssh 接続した後、スクリプトからコード ブロックをリモートで実行するにはどうすればよいですか? 可能かどうかはわかりません。

ssh "$server"    #SSH login
echo Connected to "$serverName"
exec < filelist.txt
while read updatedfile oldfile; do
    # echo updatedfile = $updatedfile #use for troubleshooting
    # echo oldfile = $oldfile   #use for troubleshooting
    if [[ ! $updatedfile =~ [^[:space:]] ]] ; then  #empty line exception
        continue # empty line exception
    fi
    if [[ ! $oldfile =~ [^[:space:]] ]] ; then  #empty line exception
    continue # empty line exception
    fi 
    echo Comparing $updatedfile with $oldfile
    if diff "$updatedfile" "$oldfile" >/dev/null ; then
        echo The files compared are the same. No changes were made.
    else
        echo The files compared are different.
        cp -f -v $oldfile /infanass/dev/admin/backup/`uname -n`_${oldfile##*/}_$(date +%F-%T)
        cp -f -v $updatedfile $oldfile 
    fi  
done
4

1 に答える 1

2

here-document(以下ではテストされていません)を使用してそれを行います。ssh サーバーで定義された変数をエスケープする必要があることに注意してください。

ssh $server <<ENDSSH 
echo Connected to "$serverName"
exec < filelist.txt
while read updatedfile oldfile; do
#   echo updatedfile = $updatedfile #use for troubleshooting
#   echo oldfile = $oldfile   #use for troubleshooting
           if [[ ! $updatedfile =~ [^[:space:]] ]] ; then  #empty line exception
            continue # empty line exception
           fi
           if [[ ! $oldfile =~ [^[:space:]] ]] ; then  #empty line exception
            continue # empty line exception
           fi 
        echo Comparing $updatedfile with $oldfile
        if diff "$updatedfile" "$oldfile" >/dev/null ; then
            echo The files compared are the same. No changes were made.
        else
            echo The files compared are different.
            cp -f -v $oldfile /infanass/dev/admin/backup/`uname -n`_${oldfile##*/}_$(date +%F-%T)
            cp -f -v $updatedfile $oldfile 
        fi          
done
ENDSSH
于 2013-07-16T14:51:33.857 に答える