Экранирование кавычек при использовании SSH - PullRequest
7 голосов
/ 08 июля 2011

Я пытаюсь создать простой сценарий развертывания для моих приложений PHP.Я знаю, что есть несколько инструментов для этой работы (Capistrano, Phing и т. Д.), Но они кажутся большими для моей простой процедуры развертывания.

Я использую sshpass , чтобы не вводить мойпароль снова и снова.Но после загрузки сжатого установщика мне нужно подключиться к серверу по ssh и выполнить несколько команд.Одним из которых является сед.Итак, цитаты нарушают мой сценарий.Это что-то вроде этого:

sshpass -p foo ssh user@host "
   cd /www/htdocs/foo/bar 
   echo 'Untar and remove installer'
   tar -zxf install.tar.gz

   sed "s/define('ENVIRONMENT', 'development');/define('ENVIRONMENT', 'production');" index.php > tmp && mv tmp index.php
   sed "s/define('ENVIRONMENT', 'development');/define('ENVIRONMENT', 'production');/" admin/index.php > tmp && mv tmp admin/index.php

"

Как видите, я использую двойные кавычки для начала своих выражений SSH, но мне также нужно использовать их в sed.

Любые предложения будутс благодарностьюСпасибо!

Ответы [ 2 ]

8 голосов
/ 08 июля 2011

Экранирование внутренних кавычек является нормальным способом. Это не работает?

sshpass -p foo ssh user@host "
cd /www/htdocs/foo/bar
echo 'Untar and remove installer'
tar -zxf install.tar.gz

sed \"s/define('ENVIRONMENT', 'development');/define('ENVIRONMENT', 'production');\" index.php > tmp && mv tmp index.php
sed \"s/define('ENVIRONMENT', 'development');/define('ENVIRONMENT', 'production');/\" admin/index.php > tmp && mv tmp admin/index.php

"
2 голосов
/ 08 июля 2011

Можно ли использовать здесь документ здесь:

sshpass -p foo ssh user@host <<DATA
   cd /www/htdocs/foo/bar 
   echo 'Untar and remove installer'
   tar -zxf install.tar.gz

   sed "s/define('ENVIRONMENT', 'development');/define('ENVIRONMENT', 'production');" index.php > tmp && mv tmp index.php
   sed "s/define('ENVIRONMENT', 'development');/define('ENVIRONMENT', 'production');/" admin/index.php > tmp && mv tmp admin/index.php
DATA
...