У меня есть файл 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. Я буду признателен, если вы предложите какой-либо другой способ.