SSH セッションでスクリプトを終了するにはどうすればよいですか?

SSH セッションでスクリプトを終了するにはどうすればよいですか?

私のスクリプトには、sshリモート サーバーにログインしていくつかのコマンドを実行するコマンドが含まれています。このコマンドは、ファイルが存在するかどうかを確認し、存在しない場合はスクリプト全体から出力される必要があります。

ssh $user@$hostname "if[ -f $filename];then 
  echo"file exists Proceeding next steps;
else 
  "echo file doesn't exist";
   exit 1;
fi"

ただし、ファイルが存在する場合は上記のコマンドが正常に実行されますが、ファイルが存在しない場合は、exitコマンドがsshセッションから抜けるだけです。

スクリプトを終了するのではなく、スクリプト内の他のコマンドが引き続き実行されます。

あなたの提案に協力してください。

答え1

事前に設定された特定の変数 (例: your ) を必要とする ssh でスクリプトを実行するには、$filename次の手順を実行します。

ssh user@host 'bash -s' < local_script.sh "$filename"

local_script.sh の内容:

#!/bin/bash
[ $# -ne 1 ] && echo '$0 needs at least 1 parameter' 1>&2 && exit 2
filename="$1"

if [ ! -f "$filename" ]; then
  echo "[ $filename ] does not exist"
  exit 1
fi
echo "[ $filename ] exists"

実行するコマンドで渡される変数が必要ない場合は、次のようにします。

ssh user@host '
  if [ ! -f "test/stuff" ]; then
    echo "File does not exist"
    exit 1
  fi
  echo "File exists"
'

シングルクォートに注意してください'。これにより、コマンドが拡大

$filenameまた、コード行数を減らすために firstが存在しないことを確認し、タブ/空白を使用しました。

コマンドを読みやすくするには、これを試してください

ssh user@host <<'ENDSSH'
  if [ ! -f "test/stuff" ]; then
    echo "File does not exist"
    exit 1
  fi
  echo "File exists"
ENDSSH

ソース

関連情報