update_frontend.sh

update_frontend.sh

サーバーの更新プロセスを自動化しようとしています。これがする必要があるのは、ファイルをgit diff確認し、後である場所から別の場所にコピーできるようにすることです。

私のローカルコンピュータのスクリプトは次のとおりです。

update_frontend.sh

#!/bin/sh
ssh [login details] -t -t 'bash -s' < ~/Scripts/update_frontend_cmd.sh

update_frontend_cmd.sh

SOURCE=/var/www/git_front/mydir_front
TARGET=/var/www/front
dothis=

cd "$SOURCE"
for i in $(git diff --name-only origin/master master)
    do
    x=`echo $i | sed 's/mydir\///'`
        dothis=`echo "
$dothis
cp './mydir/$x' '$TARGET/$x'"`
    done

git pull
eval $dothis

問題は、最初の入力(git pullにログイン、削除、または実行したい他のコマンド)の後にシェルがハングすることです。私は無限に待っている空行を取得します。原因は何か知っていますか?

ベストアンサー1

情報が処理されると、update_frontend_cmd.sh入力は完了します。 sshは単にキーボード入力に戻りません。

リモートシステムでスクリーンセッションを実行し、そこからコマンドを実行することを検討できます。完了したら再接続してください。

より簡単な方法は、スクリプトをサーバーにプッシュし(scpまたはより良い方法はpushを介してgit)ローカルで実行することです。

おすすめ記事