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

이전에 설정된 특정 변수(예: 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또한 코드 줄을 줄이고 탭/공백을 사용하기 위해 첫 번째 가 존재하지 않는지 확인했습니다 .

명령을 더 읽기 쉽게 만들려면 다음을 시도하십시오.

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

원천

관련 정보