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

원천

관련 정보