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
  • Пересылка порта запроса ssh с глобального IP на определенный локальный IP-адрес
  • Доступ запретил SSH из окон в linux через шпатлевку
  • Почему я не могу подключиться к VPS после изменения ОС от CentOS до Ubuntu?
  • Возможно выполнить команду pipe с помощью su через ssh
  • убедитесь, что все сеансы tmux прекращаются, когда сеанс SSH заканчивается
  • Whitelist Cloud 9 SSH Workspace в AWS
  • Как я могу выполнить процесс, который я запускаю во время сеанса сеанса 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

    Любое шифрование диска, которое блокируется в течение некоторого времени после нескольких неудачных попыток?

    Почему не работает эта команда sudo mv с шаблоном?

    Не удается войти в систему или отправить ssh пользователю без полномочий администратора Cygwin в этом месяце, но может в прошлом месяце и по-прежнему использовать для других пользователей, не являющихся администраторами

    Количество элементов в массиве bash, где имя массива является динамическим (т.е. хранится в переменной)

    Как копировать файлы только в удаленную папку на другом сервере, которые еще не существуют в папке … из командной строки в Linux?

    Как настроить RStudio Desktop verion на машине CentOS 5?

    как получить различные часы на CLI отдельно от вашей часовой зоны?

    Установка Fedora против Ubuntu

    Использование вывода команды в printf в ksh

    Не удается получить доступ к дискам NTFS после установки элементарной ОС

    Вырезать каждую 100-ю колонку из csv

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

    scp не может загружать / скачивать файлы, даже если ssh работает

    Grepping и sedding IP из ip addr show

    uim не может зарегистрировать mozc (ubuntu)

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