SSH 스크립트를 통해 디렉토리 테스트 - 아무 일도 일어나지 않습니다

SSH 스크립트를 통해 디렉토리 테스트 - 아무 일도 일어나지 않습니다

저는 일반적으로 여기 문서를 사용하여 이와 같은 서버 스크립트를 실행합니다.

그러나 디렉토리가 존재하는지 테스트하면 테스트가 실패하더라도 스크립트가 계속됩니다. 이유는 무엇입니까?

ssh $user@$ip /bin/bash <<SCRIPT

if [[ ! -d ~/.debfiles ]];then
  echo "Error: debfiles doesnt exist" 2> ~/error.txt
  exit 1
fi

SCRIPT

나는 이것을 내 로컬 컴퓨터에서 실행하고 있으며 문제의 서버는 가상 컴퓨터입니다.

답변1

Kusalananda가 그의 편집에서 지적했듯이, <<당신이 언급하고 있는 문법은 다음과 같습니다.여기 문서.

다른 의견에서 지적했듯이 스크립트의 의도는 약간 모호하지만 다음과 같이 스크립트를 구성하는 것을 고려하십시오.

user=me
ip=myhost
dir=Test

if ssh "$user"@$ip /bin/bash << SCRIPT
[[ ! -d ~/"$dir" ]]
SCRIPT
then
  echo "Error: $dir doesnt exist"
  exit 1
fi

echo the script continues

그런 식으로:

$ ssh me@myhost rm -rf Test
$ ./test.sh
Error: Test doesnt exist
$ ssh me@myhost mkdir Test
$ ./test.sh 
the script continues

이와 같은 간단한 here 문서의 경우 $dir비협조적인 문자가 포함되어 있지 않다면 "string here"로도 충분합니다.

if ssh "$user"@$ip /bin/bash <<< "[[ ! -d ~/$dir ]]"
then
...

답변2

exit원격 서버에서 실행 중입니다. 거기에서 실행되는 부분이 종료되어 ssh종료되고 나머지 로컬 부분이 계속됩니다.

넌 아무것도 보여주지 않았어"테스트가 실패하더라도 계속 진행”라는 메시지가 원격 호스트나 로컬 시스템에 존재하므로 우리는 귀하가 시도하고 있는 것을 자신 있게 테스트할 수 없습니다.

관련 정보