Запустите команду в sudo через SSH

Я получаю доступ к удаленной машине в Linux, используя скрипты Bash. Мой код выглядит следующим образом

#!/bin/bash ssh -i manu_bp.pem ubuntu@54.68.67.68 <<EOF sudo -s cat /opt/revsw-config/apache/rijomon2_revsw_net/ui-config.json > r1.txt echo `$(jq ".rev_component_co.mode" r1.txt)` EOF 

Я не могу напечатать значение jq. Если я пишу эту команду как echo $(jq '.rev_component_co.mode' r1.txt) в терминале удаленной машины, она показывает точный результат. Но если я напишу его в скрипте и попытаюсь выполнить, он покажет ошибку

 jq: r1.txt: No such file or directory 

One Solution collect form web for “Запустите команду в sudo через SSH”

Вы запускаете jq на локальном компьютере, так как вы используете «неуказанный» здесь документ, где символы \`$ интерполируются. Чтобы запустить команду в удаленной оболочке, упорядочьте текст, переданный в этом документе, чтобы содержать команду. Поскольку вы не используете локальную переменную или подстановку команд, самый простой способ сделать это – использовать литерал здесь.

 ssh -i manu_bp.pem ubuntu@54.68.67.68 <<'EOF' sudo -s cat /opt/revsw-config/apache/rijomon2_revsw_net/ui-config.json > r1.txt echo "$(jq ".rev_component_co.mode" r1.txt)" EOF 

Я предполагаю, что использование backquotes вокруг круглой скобки в долларах было ошибкой – это привело бы к выходу команды jq и использовало бы этот вывод в качестве команды для выполнения.

Вы можете упростить это: echo "$(somecommand)" – это echo "$(somecommand)" способ печати вывода somecommand (с несколькими отличиями, например, отключение окончательной новой строки и в некоторых оболочках, выполняющих обратную косую черту, но если это вообще имеет значение, то использование echo , вероятно, является неправильным методом).

 ssh -i manu_bp.pem ubuntu@54.68.67.68 <<'EOF' sudo -s cat /opt/revsw-config/apache/rijomon2_revsw_net/ui-config.json > r1.txt jq ".rev_component_co.mode" r1.txt EOF 

Вы можете просто написать это в одной команде (новые строки необязательны), но будьте осторожны, что вам нужны два уровня цитирования: один для локальной оболочки и один для удаления оболочки.

 ssh -i manu_bp.pem ubuntu@54.68.67.68 'sudo sh -c " cat /opt/revsw-config/apache/rijomon2_revsw_net/ui-config.json > r1.txt; jq .rev_component_co.mode r1.txt"' 

Если вам не нужно запускать jq как root, только для чтения файла с правами root, используйте

 ssh -i manu_bp.pem ubuntu@54.68.67.68 ' sudo cat /opt/revsw-config/apache/rijomon2_revsw_net/ui-config.json > r1.txt; jq .rev_component_co.mode r1.txt' 
  • Получить статус выхода процесса через SSH
  • Не удалось использовать ssh-copy-id - mktemp: не удалось создать файл через шаблон
  • ssh X переадресация не работает на компьютерах за пределами локальной сети, когда ControlMaster установлен на авто
  • sshfs - конечная точка транспорта не подключена
  • Получение числа неудачных попыток входа в систему заставляет последний успешный вход в систему / CentOS 7
  • Как исправить это eth0 и eth1, когда трафик, выходящий через eth0, терпит неудачу?
  • Пароль SSH запрашивается, когда в Tmux
  • Может ли сервер сигнализировать клиенту о запуске скрипта БЕЗ SSH-обратного туннелирования?
  • Просмотр сценария через SSH?
  • Как начать два процесса, поддерживаемых свиньями? Итак, первый заканчивается, когда второй заканчивается?
  • автоматическое соединение ssh с использованием ключа парольной фразы
  • Interesting Posts

    Объединить входные данные из нескольких файлов / труб без сбивающих линий или блокировки?

    Как обрезать определенную часть видеоролика YouTube?

    Удаление Linux на встроенной плате

    Является ли Debian Linux совместимым с HP Spectre? Любые несовместимости?

    Как обновить настройки пользователя / группы запущенного процесса?

    Как отключить источник питания переменного тока от CLI

    Как использовать имя длинных переменных в Makefile?

    Как распечатать символ ASCII с помощью разных кодовых точек в Bash?

    граница на нижней части терминальных эмуляторов даже в виде моноклава

    Хороший сайт для ссылки на общую пропаганду linux

    Создается ли раздел, созданный dd (и кэшем), мгновенно доступный для записи

    Используйте openbox вместо kwin в Plasma 5

    Прокси-сервер на FreeBSD отклоняет соединения

    Я хочу перейти на Debian Squeeze, но какие меры предосторожности я должен предпринять?

    Как использовать feh для открытия веб-изображения с самозаверяющим сертификатом

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