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

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

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

  • Сценарий Bash возвращает «команда не найдена», если вне исходной папки
  • Как скопировать / объединить два каталога, и если два файла имеют одинаковое имя, переименуйте более старый, добавив время его модификации
  • Извлечь подстроку с символом вместо позиции
  • Сценарий оболочки Loop, если входной файл имеет больше входных данных
  • Как написать сценарий оболочки, который запускается при входе в систему?
  • Повторить на основе пользовательского ввода OS X
  • сценарий оболочки для управления количеством процессов пользователя
  • В Bash, если и если то же самое?
  • 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 

    Источник

    Interesting Posts

    Почему большинство дистрибутивов (кроме Debian) рекомендуют / требуют полной переустановки при обновлении до новой версии?

    Как использовать grep, sort и uniq для создания трех полей вывода

    генерировать согласованный уникальный идентификатор машины

    Можно ли сканировать веб-сайт для повторных изображений?

    Есть остановленные задания (при выходе из bash)

    Несколько подключений VPN, маршрутизация по стране

    Файловая система mdadm raid отличается от файловой системы диска

    Команда отображения даты

    Ошибка загрузки виртуальной машины Debian – «восстановление журнала»

    Как включить два сетевых интерфейса как для Интернета в ubuntu12.04

    Как процессы конечного пользователя, среда рабочего стола и менеджер окон взаимодействуют друг с другом?

    openjdk-8-jre-headless: Зависит от ca-cert-java, но он не будет установлен

    Предотвращение или обнаружение чтения демона в памяти

    FedUp, не может перейти на Fedora 20

    Существует ли эквивалент команды «log» GNU Screen в tmux?

    Linux и Unix - лучшая ОС в мире.