Quotes exercise – как сделать ssh внутри ssh во время запуска sql внутри второго ssh?

Возможный дубликат:
Цитирование в строках ssh $ host $ FOO и ssh $ host "sudo su user -c $ FOO"
Объединение команды, включающей одиночные и двойные кавычки для другой команды

Я хочу запустить sql поверх ssh с php. Ниже команда работает красиво

ssh server1 "sudo -u db2inst1 sh -c '/opt/ibm/db2/V9.7/bin/db2 connect to RATIONAL; /opt/ibm/db2/V9.7/bin/db2 set schema Edumate; /opt/ibm/db2/V9.7/bin/db2 \"select * from edumate_settings\"'" 

Теперь мне нужно сделать ssh с сервера1 на server2, а затем запустить «sudo -u db2inst1 ….» там.

Есть ли простой способ, как иметь дело с кавычками, если я добавлю дополнительный сервер к этому сценарию? Так оно начнется как

 ssh server1 "ssh server2 "the rest is as above" 

Обратите внимание, что мне нужно запустить код выше с php.

  • Как выполнить удаленный сценарий с помощью «экранов»?
  • SSH-туннелирование терпит неудачу с «административно запрещено: open failed»
  • Удаленная команда в файле конфигурации ssh
  • как включить или добавить / dev с tar -one-файловой системой
  • Код PBS для отправки задания в кластер
  • Запустите команду в sudo через SSH
  • Сбой подключения к SSH
  • Почему пользователь запускает процесс, когда он не вошел в систему?
  • One Solution collect form web for “Quotes exercise – как сделать ssh внутри ssh во время запуска sql внутри второго ssh?”

    Вы хотите получить command "escaped_command_with_arguments" command_with_arguments для command "escaped_command_with_arguments" . Вы получаете escaped_command_with_arguments , сканируя command_with arguments слева направо и заменяя каждый \ by \\ и каждый " by \" .

    альтернативно вы command_with_arguments в редактор и

    1. замените все \ на \\
    2. замените каждый " by \"

    в этом порядке. Таким образом, шаг за шагом вы можете сгенерировать следующую последовательность выражений (я использовал блокнот Windows для создания выражения)

     select * db2 "select *" sudo "db2 \"select *\"" ssh "sudo \"db2 \\\"select *\\\"\"" ssh "ssh \"sudo \\\"db2 \\\\\\\"select *\\\\\\\"\\\"\"" ssh "ssh \"ssh \\\"sudo \\\\\\\"db2 \\\\\\\\\\\\\\\"select *\\\\\\\\\\\\\\\"\\\\\\\"\\\"\"" ssh "ssh \"ssh \\\"ssh \\\\\\\"sudo \\\\\\\\\\\\\\\"db2 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"select *\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\"\\\"\"" 

    Если вы подсчитаете числа \ перед каждым " в последнем выражении, вы получите следующую последовательность:

     0 1 3 7 15 31 31 15 7 3 1 0 

    или

     1-1 2-1 4-1 8-1 16-1 32-1 32-1 16-1 8-1 4-1 2-1 1-1 

    Таким образом, можно построить такое вложенное выражение за один шаг без итерации, но вы должны позаботиться о том, как выражения вложены.

    Кроме того, эти методы могут быть расширены в ситуациях, когда помимо " и " есть другие экранированные символы.

    Поэтому добавьте свою команду в редактор, замените server1 на server2 , замените \ на \\ и " на \" как описано выше, и добавьте ssh server1 " в начале и " в конце, и вы получите

     ssh server1 "ssh server2 \"sudo -u db2inst1 sh -c '/opt/ibm/db2/V9.7/bin/db2 connect to RATIONAL; /opt/ibm/db2/V9.7/bin/db2 set schema Edumate; /opt/ibm/db2/V9.7/bin/db2 \\\"select * from edumate_settings\\\"'\"" 
    Interesting Posts

    Маршрут блокирует входящий трафик

    Выполните вывод parse ls с помощью sed, чтобы получить расположение файлов файлов с определенными именами

    Как настроить разрешение для virtfs в системном libvirtd

    Сделать pwd в терминах «~»?

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

    Как я могу отправить поддельные пакеты в Linux?

    Проблема с переменной чтения от AWK

    Календарная программа Unix, обновленная для работы с несколькими годами?

    код выхода функции ip

    В каких случаях SIGHUP не отправляется на работу при выходе из системы?

    Не удается эхо или создать символическую ссылку на файл со специальными символами в имени внутри сценария bash

    Клавиатура Usb используется отдельно в X

    Что обозначает символ @ в начале пути сокета домена unix в Linux?

    Заменить данные в определенных положениях в txt-файле, используя данные из другого файла

    Как отформатировать результаты grep?

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