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

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

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

  • Загружать программные двоичные файлы при загрузке
  • Почему «while .. read .. << EOL» выполняет расширение переменной, но <файл и | не?
  • Убивать именованный процесс старше X минут? (нет killall -o)
  • Печать эха в файле и запрос параллельно
  • Тайм-аут скриптов с использованием USBMount
  • используя переменную «файл», полученную из «for» файла «in», и перейти к другому скрипту не удалось
  • Закрепление скрипта немного больше
  • Подавлять вывод, если только нулевой код выхода
  • 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

    Каковы причины, по которым Slackware все еще отказывается включать PAM?

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

    Команда, чтобы выделить появление метода в файле?

    копирование нескольких файлов по имени файла

    Как установить гостевые дополнения virtualbox в TrueOS?

    Вкладка и завершение

    Настройка почтовых ящиков на внешнем диске с помощью постфикса и курьера

    Intel cpu не отображается как совместимый с VGA контроллер

    Количество секунд с эпохи в солярии 10

    badblocks принимает только 32-битное целое число как начальные / конечные значения

    Tmux идентифицирует, масштабируется ли панель и активируется

    Как запустить скрипт, когда SSSD создает домашний каталог для нового пользователя

    Почему мой пользовательский макет не работает?

    Использование wget для получения имен файлов из текстового файла

    Установка linbox через yum дает неопределенные ссылки

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