Как выйти из скрипта в сеансе 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"
'

Обратите внимание на одинарные кавычки ', они мешают вашей команде бытьрасширенный.

Также я проверил отсутствие $filenamefirst, чтобы сократить количество строк кода и использовать табуляции/пробелы.

Чтобы сделать вашу команду более читабельной, попробуйте это

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

Источник

Связанный контент