Как выйти из скрипта в сеансе ssh?

Мой скрипт содержит команду ssh для входа на удаленный сервер и выполнения нескольких команд. Команда проверяет, существует ли файл, и если он не должен выходить из всего скрипта.

 ssh $user@$hostname "if[ -f $filename];then echo"file exists Proceeding next steps; else "echo file doesn't exist"; exit 1; fi" 

Однако приведенная выше команда выполняется успешно, если файл присутствует. Но в другом случае, если файл не существует, команда exit просто выходит из сеанса ssh

Он по-прежнему продолжается с другими командами в скрипте, а не с скриптом.

Пожалуйста, помогите мне с вашими предложениями.

One Solution collect form web for “Как выйти из скрипта в сеансе ssh?”

Чтобы выполнить скрипт с 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 

Источник

  • «Scope.sh» отсутствует для файлового менеджера ranger
  • Извлечь имя файла из другого имени файла.
  • Безопасны ли бесплатные учетные записи?
  • Дайте команде удалить повторяющиеся строки в TXT-файле и сохраните новый файл как файл new.txt
  • как проверить формат файловой системы
  • Неожиданное поведение сценария оболочки
  • Использование специального символа "и` в команде send в сценарии ожиданий
  • Попытка присвоения не переменной?
  • извлечение доменных имен (имен хостов) из текстового файла
  • Добавить временные метки для вывода команды «top»
  • Использование «$ {a: -b}» для назначения переменных в скриптах
  • Linux и Unix - лучшая ОС в мире.