PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bashscript: Mehrzeiligen Text in eine Variable schreiben



akula
08-08-2003, 08:41
Hallo Leute

Ich schreibe ein Programm, dass mir die Kudenverwaltung auf meinem Server vereinfacht. Dazu schreibe ich z.B. die VirtualHost Konfig in die httpd.conf

Wie kann ich aber nun bei der Zuweisung der variable $virtual_host mehrzeiligen Text einfuegen ?

Im Moment mache ich es mit echo Statements:


apache () {
`echo '<VirtualHost 193.109.216.54>' >> $APACHE_CONFIG`
`echo " ServerAdmin webmaster@$domain" >> $APACHE_CONFIG`
`echo " DocumentRoot /home/httpd/html/$domain" >> $APACHE_CONFIG`
`echo " ServerName www.$domain" >> $APACHE_CONFIG`
`echo " ErrorLog /var/log/apache/$domain-error.log" >> $APACHE_CONFIG`
`echo " ErrorLog /var/log/apache/all-error.log" >> $APACHE_CONFIG`
`echo " CustomLog /var/log/apache/$domain-access.log combined" >> $APACHE_CONFIG`
`echo " CustomLog /var/log/apache/all-access.log combined" >> $APACHE_CONFIG`
`echo "</VirtualHost>" >> $APACHE_CONFIG`
}


aber das ist nicht unbedingt elegant

gruss akula

buffer_7
08-08-2003, 11:48
Mahlzeit,

wenn Du eine Variable elegannter füllen willst, versuch es doch mal mit einem HERE-Dokument. Müsste auch funktionieren. und ist eleganter.

$APACHE_CONFIG=`cat << ENDE
<VirtualHost 193.109.216.54>
ServerAdmin webmaster@$domain
DocumentRoot /home/httpd/html/$domain
ServerName www.$domain
ErrorLog /var/log/apache/$domain-error.log
ErrorLog /var/log/apache/all-error.log
CustomLog /var/log/apache/$domain-access.log combined
CustomLog /var/log/apache/all-access.log combined
</VirtualHost>
ENDE
`

Hoffe, das ist das was Du gesucht hast.

mfg

buffer_7

Jasper
08-08-2003, 12:29
Original geschrieben von akula

Ich schreibe ein Programm, dass mir die Kudenverwaltung auf meinem Server vereinfacht. Dazu schreibe ich z.B. die VirtualHost Konfig in die httpd.conf


da gibt es bessere varianten. schreibe in die httpd.conf eine Include anweisung:

Include /verzeichnis/*.conf

in dieses verzeichnis kopierst du dann die einzelnen config-schnipsel für die einzelnen vhosts, d.h. pro kunde am besten ein config-file. so musst du nicht mehr in der hauptconfig rumscheiben, einfach files reinkopieren oder herauslöschen.

-j

Warlord
20-01-2004, 12:44
Hallo

Include /verzeichnis/*.conf


Hallo hat zwar alles nichts mehr mit Shell-Skript zu tun.
Aber funktioniert das bei Dir mit dem * ?

Ich bekomme eine Fehlermeldung:
*.conf failed

MfG Torsten

akula
20-01-2004, 12:51
ja das funktioniert bei mir sehr gut

Hast du das Include-Modul geladen ??

Warlord
20-01-2004, 13:15
Hi

>Hast du das Include-Modul geladen ??

WAS?


Also das Include funktioniert ja, aber ich muss jede Datei genau mit dem
Namen angeben. Das ist natürlich doof.

LoadModule includes_module /usr/lib/apache/1.3/mod_include.so

Meinst Du das?

Nur halt mit dem Sternchen nicht.

Ich will jetzt nämlich auch alles hier vereinfachen und evtl. Skripte zum Anlegen
dafür erstellen. Damit die anderen Mitarbeiter das auch eunrichten können.

MfG Torsten

Warlord
20-01-2004, 13:48
So erstmal Hallo an alle,

bin ja neu hier. Fange gerade an mit Bash und Shell.

Zu dem Thema eben: Habe es nun so gelöst.

Skript:

echo "<VirtualHost *>" > $2
echo " ServerAdmin tp@domain.de" >> $2
echo " DocumentRoot /var/www/$1" >> $2
echo " ServerName www.$1.de" >> $2
echo " ServerAlias $1.de" >> $2
echo " ErrorLog /var/log/apache/$1_error.log" >> $2
echo " CustomLog /var/log/apache/$1_access.log common" >> $2
echo " ScriptAlias /cgi-bin/ /var/www/$1/cgi-bin/" >> $2
echo "" >> $2
echo " <Directory /var/www/$1/cgi-bin/>" >> $2
echo " AllowOverride None" >> $2
echo " Options ExecCGI FollowSymLinks" >> $2
echo " Order allow,deny" >> $2
echo " Allow from all" >> $2
echo " </Directory>" >> $2
echo "</VirtualHost>" >> $2

echo "Include /etc/apache/vhosts/$2" >> /etc/apache/httpd.conf

Und nun kann ich an der Konsole eingeben:

./virtual-host-include domain domain.conf

Was haltet Ihr davon?

MfG Torsten

akula
20-01-2004, 14:03
hehe ich habe es ohne sternchen

gruss akula

Warlord
20-01-2004, 14:15
Hi,

>hehe ich habe es ohne sternchen

Na ohne Deine Anleitung wär ich auch nie darauf gekommen.

1. Problem ist aber schon mal:

Was tun wenn ich als Serveralias dann noch eine .com Doamin eintargen
muss. Oder wenn es drei Serveraliasse gibt?

Haste da vielleicht auch schon n Plan

MfG Torsten

akula
20-01-2004, 14:46
also ich habe einfach alle *.akula.ch hosts in einer Datei und in dieser sind dann www und mail.akula.ch definiert