vhosts einrichten

speedone

New Member
Hallo

Ich möchte ein php script programmieren, womit man einen vhost einrichten kann.
Das heißt, man gibt die AdminEmail, ServerAlias, DokumentRoot ein und diese daten werden in einer Mysql Datenbank gespeichert. Dann soll, wenn das geht, mittels Cronjop, wenn ein neuer Vhost gemacht wurde ein Shell Script eine Datei im Apache Verzeichnis erstellen. In der Datei sollen folgende Angaben reingeschrieben werden:
Code:
<VirtualHost * >
ServerAdmin EMAIL
ServerName  host.domain.de
ServerAlias  host.domain.de
DocumentRoot /var/www/vhosts/1/
<Directory //var/www/vhosts/1>
Order Deny,Allow
Allow from all
# Don't show indexes for directories
Options -Indexes
</Directory>
</VirtualHost>

und danache um den vhost zu aktivieren "a2ensite MeineDomain.de" ausgeführt werden.

Mein Problem ist dabei, dass ich nicht weiß wie ich unter UNIX per Shell Sript eine Datei mit Inhalt anlegen kann. Außerdem müssen die Angaben über DocumentRoot... ja irgendwie vll über parameter dem Shellscript bekannt gemacht werden.

Hat da jemand eine Idee. Oder eine andere Lösung um per Browser einen Vhost anzulegen.

Vielen Dank im Voraus
 
Last edited by a moderator:
Hab die meisten Probleme jetzt schon selber gelöst, aber weis jemand, wie man mit einem Shell Script (UNIX) den inhalt einer textdatei importieren kann und in einer Variable speichern kann?
 
Das kommt darauf an, was genau Du willst... Den gesamten Inhalt der Datei in eine Variable:
Code:
VARIABLE=`cat [I]Datei[/I]`
die einzelnen Spalten der Datei unterschiedlichen Variablen zuweisen geht so:
Code:
read A B C D E < [I]Datei[/I]

Viele Grüße,
LinuxAdmin
 
Bei meinem Sript würde es reichen die ganze Textdatei auszulesen, allerdings würde mich auch sehr interessieren, wie das mit den einzelnen Zeilen auslesen geht, wie weiß man den Zeilen jeden eine eigene Datei an.

Könntest du ein Beispiel zeigen:confused:
 
Ich habe das hier mal ausprobiert, nur leider hat es nicht geklappt. Es kam der Fehler, dass die Datei oder das Vezeichnis nicht gefunden wurde. Allerdings kann es nicht daranliegen. Damit war alles klar.

Code:
VARIABLE=`cat Datei`

Dann hab ich mal testweise andere Anführunszeichen benutzt:

Code:
VARIABLE="cat Datei"

Es kam dann keine Fehlermeldung mehr aber in der Variable war auch kein Wert...

Weiß jemand worans liegt?

Oder geht das, dass man wenn ich z.b eine Shellscript habe was test heißt einen Parameter angebe.

z.b
test 11

dann soll er den parameter 11 im script als eine variable speichern

Das ist mein einziges Problem noch und ich habe nirgendswo etwas gefunden
 
Last edited by a moderator:
"Datei oder Verzeichnis nicht gefunden" bedeutet nicht, dass meine Angabe falsch war, sondern dass Du nicht den richtigen Pfad für die Datei angegeben hast...

Code:
#! /bin/bash

PARAMETER1=$1
PARAMETER2=$2

VARIABLE=`cat /etc/issue`

echo "PARAMETER1=$PARAMETER1"
echo "PARAMETER2=$PARAMETER2"
echo "VARIABLE=$VARIABLE"
echo fertig
#
$ ./test 11 Hallo
PARAMETER1=11
PARAMETER2=Hallo
VARIABLE=
Welcome to SuSE Linux 9.0 (i586) - Kernel \r (\l).
fertig
Viele Grüße,
LinuxAdmin
 
achso man muss den absoluten Pfad angeben. Die Idee kam mir nicht, das auszuprobieren.
Klappt jetzt

Dankeschön
 
Last edited by a moderator:
leider ist schon wieder ein problem aufgetreten;)

Ist es möglich beim Shell Scipt eine if anweisung zu schreiben, wie bei diesem Beispiel in php?


PHP:
if ($ID == '0') {
...
...}
 
Moin!

Fragen sind überhaupt kein Problem. Aber wir möchten ein wenig Eigeninitiative sehen. Wenn es hakt, sind wir gerne bereit uns auch mit unserem Wissen zu beteiligen.

MfG,
marneus
 
Solche allgemeinen Fragen anhand von Beispielen zu lösen, die man beim Suchen im Netz findet, ist zugegebenermaßen etwas schwierig. Sie werden aber sicher beantwortet, wenn man sich die gute Anleitung zur bash durchliest -- man muss ja nicht jeden Abschnitt gelesen...
Code:
man bash
Viele Grüße,
LinuxAdmin
 
ich habe sehr lange an einer Lösung gesucht, dass sich ein Shell Script als Root ausführt.
Ich möchte, dass jeder das Script starten kann, allerdings muss das Script dann sozusagen sich als Root einloggen.
Wegen z.b apache restarten...

Ist das irgendwie möglich?
 
ich könnte Dir natürlich jetzt verraten, wie das geht -- aber das willst Du nicht wirklich. Das ist viel zu gefährlich! Da Du das Script ohnehin durch Cron starten lassen willst, kannst Du es ja auch in den crontab von root eintragen; dann wird es automatisch mit root-Rechten ausgeführt.

Viele Grüße,
LinuxAdmin
 
Das mit den Crontabs hab ich gemacht.

Da ich aber das Script nur im Lokalen Netzwerk benutze, wäre es nicht schlimm, wenn das script mit root läuft.

Kannst du die Lösung trotzdem sagen?
Interessiert mich mal
 
Normalerweise ginge das mit folgendem Befehl:

Code:
chown root:root /pfad/zum/script
chmod u+s /pfad/zum/script

Da das ganze aber viel zu gefährlich ist, weigert sich die Shell, mit SUID (=set user ID)-Rechten zu laufen und gibt die erweiterten Privilegien sofort wieder auf. Die Programmierer haben sich schon was dabei gedacht, als sie den Code eingebaut haben...

Aber man kann das umgehen, indem man das Script schon als root aufruft. Dies geschieht mit einem C-Programm, das als wrapper verwendet wird, das die effektive und reale UID auf root setzt und dann das Script aufruft. Bei dem Programm muss dann natürlich das SUID-Bit gesetzt sein -- und nicht mehr beim Script.
Code:
/* wrapper.c */
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char** argv) {

    setreuid(0, 0);
    return system("/pfad/zum/script");
}
Das ganze zum Laufen zu bringen wird dem Leser als leichte Übungsaufgabe überlassen.

Viele Grüße,
LinuxAdmin
 
Back
Top