SSHリモートファイルの実行が機能しません

SSHリモートファイルの実行が機能しません

test.sh次のコマンドを含むbashスクリプトがあります。

#!/bin/bash

PASSWORD=""
USERNAME=""
REM_HOSTNAME='localhost'

FILES_TO_COPY="remote_exec.sh"


function scptmp {
    exec sshpass -p $PASSWORD scp -o "ConnectTimeout 3" \
        -o "StrictHostKeyChecking no" \
        -o "UserKnownHostsFile /dev/null" \
        "$@"
}

echo -e "\tCopying files to remote host..."
scptmp -r -q $FILES_TO_COPY $USERNAME@$REM_HOSTNAME:/tmp

echo -e "\tSet execution privs on remote file..."
sshpass -p "$PASSWORD" ssh -t -oStrictHostKeyChecking=no $USERNAME@$REM_HOSTNAME "echo $PASSWORD | sudo -S chmod +x /tmp/$FILES_TO_COPY"

echo -e "\Execute..."
sshpass -p "$PASSWORD" ssh -oStrictHostKeyChecking=no -t $USERNAME@$REM_HOSTNAME "echo $PASSWORD | sudo -S bash /tmp/$FILES_TO_COPY"

remote_exec.sh以下を含みます。

#!/bin/bash

hostname=`hostname`
mkdir $hostname

私がスクリプトを実行すると

bash test.sh

エラーは発生しませんが、remote_exec.shディレクトリは生成されず、ホスト上で実行されていないようです。

問題が何であるかを知っている人はいますか?

ベストアンサー1

を使用すると、現在のexecシェルを次のコマンドを実行して生成されたプロセスに置き換えることができます。つまりscptmp、関数を呼び出すと、現在スクリプトを実行しているシェルがプロセスに置き換えられますsshpasssshpass関数のユーティリティの実行が完了すると、スクリプトは実行されなくなります。

おすすめ記事