![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 | ||
|
Blubb... öfz
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
|
Hi,
ich lerne gerade Bash.. Ist im Grunde recht simpel gestrickt, dennoch hab ich ein Problem. Folgendes kleines Script soll es einem Laien möglich machen einen FTP-User anzulegen: Code:
#!/bin/bash
#Mit diesem Programm wird ein neuer FTP-User angelegt
echo "Hallo admin,";
echo "hier kannst du einen neuen FTP-User anlegen.";
echo "Schrittweise werden Infos abgefragt";
echo "-----------------------------------------";
echo "# MANUAL #";
echo "| Bei Quotaabfragen bitte einen integer |";
echo "| oder keinen Wert eingeben. 0 hat den |";
echo "| gleichen effekt wie nichts. |";
echo "| Dieses Programm erstell gleich alle |";
echo "| benoetigten Ordner, sofern als |";
echo "| berechtiger Nutzer aufgerufen. |";
echo "#---------------------------------------#";
echo "Gib nun bitte den Namen des FTP-Users ein";
read Name;
if [ $Name != "" ]; then
echo "Gib nun bitte das Passwort ein.";
read Password;
if [ "$Password" != "" ]; then
echo "Welches Directory soll genutzt werden?";
read Path;
if [ "$Path" != "" ]; then
echo "Wie viel Speicher soll fuer den Nutzer reserviert werden? (in MB)";
read Quota;
echo "Wie viele Dateien darf der Nutzer maximal heraufladen?";
read FileQuota;
echo "Soll die Upload-Geschwindigkeit gedrosselt werden? (Wenn ja, dann bitte einen Numerischen Wert eingeben)";
read Upload;
echo "Soll die Download-Geschwindigkeit gedrosselt werden?";
read Download;
echo "Wie viele Sitzungen darf der FTP-Nutzer gleichzeitig geoeffnet haben?";
read Sessions;
echo "$Name, $Password, $Path, $Quota, $Upload, $Download, $Sessions";
pure-pw useradd $Name -u ftpuser -d $Path
$Password;
$Password;
if [ $Quota != "" OR $Quota != "0" ]; then
pure-pw usermod $user -N $Quota;
fi
if [ $FileQuota != "" OR $FileQupta != "0" ]; then
pure-pw usermod $user -n $Quota;
fi
if [ $Upload != "" OR $Upload != "0" ]; then
pure-pw usermod $user -T $Quota;
fi
if [ $Download != "" OR $Download != "0" ]; then
pure-pw usermod $user -t $Quota;
fi
if [ $Sessions != "" OR $Sessions != "0" ]; then
pure-pw usermod $user -y $Quota;
fi
#if [ $Upload != "" OR $Upload != "0" ]
# pure-pw usermod $user -T $Quota;
#fi
pure-pw useradd $user -u ftpuser -d $Path
#else
#echo "Kein Pfad angegeben. Beende Programm";
#exit 0;
fi
#else
#echo "Kein Passwort angegeben. Beende Programm;
#exit 0;
fi
#else
Folgende Fehlerausgabe, bzw hier der Ablauf: Zitat:
Ljungi UPDATE: Das Passwort kann man anscheinend so nicht übergeben. Wird nochmals abgefragt. Werde ich also aus den If-Abfragen löschen müssen. Die Fehler die bleiben sind: Zitat:
__________________
Vive la France! Welcome to Sarkoworld... Geändert von ljungi (15.10.2006 um 19:08 Uhr). |
||
|
|
|
|
|
Nach oben #2 |
|
Blubb... öfz
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
|
Ich erlaube mir der Übersichtlichkeit halber einen 2. Post zu schreiben.
Es gibt anscheinend kein OR in Bash - die too many arguments-Fehler sind behoben. You must give (non-root) uid and gid => pure-pw useradd $user -u ftpuser -d $Path => *aufnkopphau* Hier die berichtigte Version für Leute, die sowas brauchen könnten. Code:
#!/bin/bash
#Mit diesem Programm wird ein neuer FTP-User angelegt
echo "Hallo admin,";
echo "hier kannst du einen neuen FTP-User anlegen.";
echo "Schrittweise werden Infos abgefragt";
echo "-----------------------------------------";
echo "# MANUAL #";
echo "| Bei Quotaabfragen bitte einen integer |";
echo "| oder keinen Wert eingeben. 0 hat den |";
echo "| gleichen effekt wie nichts. |";
echo "| Dieses Programm erstell gleich alle |";
echo "| benoetigten Ordner, sofern als |";
echo "| berechtiger Nutzer aufgerufen. |";
echo "#---------------------------------------#";
echo "Gib nun bitte den Namen des FTP-Users ein";
read Name;
if [ $Name != "" ]; then
echo "Welches Directory soll genutzt werden?";
read Path;
if [ "$Path" != "" ]; then
echo "Wie viel Speicher soll fuer den Nutzer reserviert werden? (in MB)";
read Quota;
echo "Wie viele Dateien darf der Nutzer maximal heraufladen?";
read FileQuota;
echo "Soll die Upload-Geschwindigkeit gedrosselt werden? (Wenn ja, dann bitte einen Numerischen Wert eingeben)";
read Upload;
echo "Soll die Download-Geschwindigkeit gedrosselt werden?";
read Download;
echo "Wie viele Sitzungen darf der FTP-Nutzer gleichzeitig geoeffnet haben?";
read Sessions;
echo "$Name, $Password, $Path, $Quota, $Upload, $Download, $Sessions";
echo "Der Pfad wird nun angelegt......"
mkdir -p $Path;
echo "Der Pfad wurde angelegt.";
echo "Erstelle Ordner html";
mkdir -p "$Path/html";
echo "Erstellt.";
echo "Erstelle Ordner files";
mkdir -p "$Path/files";
echo "Rechte werden vergeben......";
echo "....";
chown ftpuser.ftpgroup $Path;
chown ftpuser.ftpgroup "$Path/html";
chown ftpuser.ftpgroup "$Path/files";
echo "Die Rechte wurden vergeben";
echo "Der User wird angelegt. Bitte gib nun das Passwort 2x ein.";
pure-pw useradd $Name -u ftpuser -d $Path
if [ $Quota != "" ]; then
pure-pw usermod $Name -N $Quota;
fi
if [ $FileQuota != "" ]; then
pure-pw usermod $Name -n $Quota;
fi
if [ $Upload != "" ]; then
pure-pw usermod $Name -T $Quota;
fi
if [ $Download != "" ]; then
pure-pw usermod $Name -t $Quota;
fi
if [ $Sessions != "" ]; then
pure-pw usermod $Name -y $Quota;
fi
pure-pw mkdb;
echo "Die Datenbank wurde updated";
echo "Der FTP-Server wird nun neugestartet";
rcpure-ftpd stop;
rcpure-ftpd start;
echo "Sollte nicht "done" in gruen erscheinen, so melde dies bitte schleunigst <ljungi@gmail.com>";
echo "Fertig - Beende Programm";
#else
#echo "Kein Pfad angegeben. Beende Programm";
#exit 0;
fi
#else
#echo "Kein Passwort angegeben. Beende Programm;
#exit 0;
else
"Kein Name - Ende";
fi
exit 0;
__________________
Vive la France! Welcome to Sarkoworld... Geändert von ljungi (15.10.2006 um 19:28 Uhr). |
|
|
|
|
|
Nach oben #3 |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
danke!
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
Nach oben #4 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Moin!
Ich habe mich zwar noch nicht damit befasst, aber kann es sein, dass folgender Teil nicht ganz korrekt ist? Code:
if [ $Quota != "" ]; then
pure-pw usermod $Name -N $Quota;
fi
if [ $FileQuota != "" ]; then
pure-pw usermod $Name -n $Quota;
fi
if [ $Upload != "" ]; then
pure-pw usermod $Name -T $Quota;
fi
if [ $Download != "" ]; then
pure-pw usermod $Name -t $Quota;
fi
if [ $Sessions != "" ]; then
pure-pw usermod $Name -y $Quota;
fi
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #5 |
|
Blubb... öfz
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
|
Oh, ja, ist mir gar nicht aufgefallen ^^
Natürlich immer die Var, die abgefragt wird einfügen.. Die beiden User, die ich angelegt hatte, hatten keinerlei Beschränkungen - was anderes hab ich nicht getestet Derzeit überlege ich, wie ich das mit dem automatischen Anlegen einer vhost-Datei mache. Würde so vorgehen: cp template.v.conf //suchen und ersetzen => noch nicht geschaut wie oder touch name.ftp.v.conf und dann nen Text eintragen lassen. Dann fehlt nur noch ein Script zum erstellen von Mailaccounts - wobei ich noch dabei bin, den Mailserver zum Laufen zu kriegen Hier noch ein simples Script um den FTP-User zu löschen. Kann man noch erweitern mit ner Abfrage, ob es den User gibt, etc.. (Kann ich aber noch nicht ^^) Bearbeiten kommt vllt auch noch. Code:
#!/bin/bash #Loescht einen FTP-Nutzer #./delftpuser USERNAME if [ $1 != "" ]; then echo "User $1 wirklich loeschen? Y = ja, N = nein"; read Antwort; if [ "$Antwort" == "Y" ]; then pure-pw userdel $1; pure-pw mkdb; rcpure-ftpd restart; echo "User entfernt"; else echo "Nicht entfernt"; fi fi exit 0
__________________
Vive la France! Welcome to Sarkoworld... |
|
|
|
|
|
Nach oben #6 | |
|
Blubb... öfz
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
|
Hi
ich kram den alten Thread mal wieder raus... Weiß hier einer, wie man so eingaben über die Shell in einem Bash-Script simulieren kann? Bin gerade dabei mir ein kleines Webinterface dafür zu schreiben... Nur verlangt der ja nach dem PW 2x. Und ich möchte keine Shell schreiben für das Zeug, oder phpshell2 oder wie das heißt nutzen. Das ist dieser Part: Zitat:
__________________
Vive la France! Welcome to Sarkoworld... |
|
|
|
|
|
|
Nach oben #7 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
kann man eventuell mit einem
pure-pw useradd $Name -u ftpuser -d $Path < $PW oder so emulieren ? ansonsten kompilier deinen pureftpd um, dass er die Daten aus ner mysql-datenbank bezieht und dann dort den kram einfach via sql-shell einträgt. mfg robo47 |
|
|
|
|
|
Nach oben #9 | |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Zitat:
|
|
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Diverses aus meinem Apache Logs | robo47 | Tools, Server, Betriebssysteme | 3 | 25.05.2007 22:52 |
| php script (mit mysql-abfrage)wird nicht zu ende ausgeführt | lodee | PHP-Programmierung | 2 | 12.09.2006 12:39 |
| PHP Script alle x Sekunden ausführen | .bat Script? | dsxs | Sonstige Programmiersprachen | 2 | 03.08.2006 12:15 |
| Variablen per ID auf 2. Script ausgeben? | netle | Datenbanken | 6 | 18.02.2006 12:43 |
| Java Script Hilfe!!! (Platzierung eines Link) | Gamesagent | JavaScript und AJAX | 3 | 08.01.2006 04:54 |