вывести несколько строк в файл

У меня есть файл httpd.conf сервера общего хостинга, и у меня есть задача перенести каждый виртуальный хост на vps. используя awk, я извлекаю блок записи виртуального хоста для определенного сайта. и сохраните эту запись в переменной. но когда я повторяю вывод переменной для добавления httpd.conf сервера vps, выдается ошибка типа

bash :подстановка команды :строка 1 :синтаксическая ошибка рядом с неожиданным токеном newline' bash: command substitution: line 1:эхо '

Может ли кто-нибудь сказать, как точно добавить простой текстовый файл, эхо-переменную, имеющую несколько строк.

Мой сценарий ожидания выглядит следующим образом:

#!/usr/bin/expect 
set remote_ip [lindex $argv 0] 
set username [lindex $argv 1] 
set remote_command [lindex $argv 2] 
foreach {remote_ip username remote_command} $argv {break} 
spawn ssh -o "StrictHostKeyChecking no" root@$remote_ip `echo $remote_command >> /etc/httpd/conf/httpd.conf`
expect "*assword: " 
send "redhat\r" 
interact 

а переменная «удаленная команда _» содержит шаблон записей виртуальных хостов. использовал printf, но все еще существует та же проблема. –


моя удаленная команда _содержит следующие значения

<VirtualHost>
DirectoryIndex index.php
</VirtualHost>

он по-прежнему дает ту же ошибку. Я использовал кавычки «», но это работало для одной строки, а не для нескольких строк.

Мой основной скрипт script.sh содержит строки

#!/bin/bash
some code.....
some code......
some code......
echo "<VirtualHost $D_IPADDRESS>" > /opt/remotehttpd_conf
awk "p && /\/VirtualHost/{exit} /$SITENAME/{p=1}p" /opt/httpd.conf >> /opt/remotehttpd_conf
echo "</VirtualHost>" >> /opt/remotehttpd_conf
REMOTE_COMMANDS4=`cat /opt/remotehttpd_conf`
echo $REMOTE_COMMANDS4
./expect_remote_command_httpd.exp  "$D_IPADDRESS" "$USERNAME" "$REMOTE_COMMANDS4"
some code.....
some code.....

когда я повторяю REMOTE _COMMANDS4, он работает нормально и дает мне вывод, поэтому я использую команду expect _remote __httpd.exp для передачи вывода на удаленный компьютер

мой ожидаемый _удаленный _команда _httpd.exp содержит

#!/usr/bin/expect 
set remote_ip [lindex $argv 0] 
set username [lindex $argv 1] 
set remote_command [lindex $argv 2] 
foreach {remote_ip username remote_command} $argv {break} 
spawn ssh -o "StrictHostKeyChecking no" root@$remote_ip `echo $remote_command >>   /etc/httpd/conf/httpd.conf`
expect "*assword: " 
send "redhat\r" 
interact 

но он не работает. Может быть, тот подход, который я использую, совершенно неверен. Моя главная задача - извлечь все строки блока виртуального хоста, связанные с заданными сайтами, на общем httpd-сервере и передать их в файл httpd conf удаленного vps. Я буду признателен, если вы предложите какой-либо другой способ.

5
задан aditya 4 July 2012 в 09:13
поделиться