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"

ただし、ファイルが存在する場合は上記のコマンドが正常に実行されますが、それ以外の場合はファイルが存在しない場合はsshセッションでのみ終了コマンドが表示されます。

スクリプトを終了するのではなく、スクリプトの他のコマンドを実行し続けます。

あなたの提案を助けてください。

ベストアンサー1

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また、コード行を減らし、タブ/スペースを使用するために最初のコードが存在しないことを確認しました。

コマンドを読みやすくするには、次のようにします。

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

源泉

おすすめ記事