Antwort
 
Themen-Optionen Thema durchsuchen
Alt 15.10.2006, 19:04 Nach oben    #1
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard Bash-Script

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
Bitte die auskommentierten else-Zweige so im Raum stehen lassen.
Folgende Fehlerausgabe, bzw hier der Ablauf:

Zitat:
Gib nun bitte den Namen des FTP-Users ein
Test
Gib nun bitte das Passwort ein.
test
Welches Directory soll genutzt werden?
/test/
Wie viel Speicher soll fuer den Nutzer reserviert werden? (in MB)
5000
Wie viele Dateien darf der Nutzer maximal heraufladen?

Soll die Upload-Geschwindigkeit gedrosselt werden? (Wenn ja, dann bitte einen Numerischen Wert eingeben)

Soll die Download-Geschwindigkeit gedrosselt werden?

Wie viele Sitzungen darf der FTP-Nutzer gleichzeitig geoeffnet haben?
10
Test, test, /test/, 5000, , , 10
You must give (non-root) uid and gid
./ftpuser.sh: line 39: [: too many arguments
./ftpuser.sh: line 42: [: too many arguments
./ftpuser.sh: line 45: [: too many arguments
./ftpuser.sh: line 48: [: too many arguments
./ftpuser.sh: line 51: [: too many arguments
You must give (non-root) uid and gid
Danke

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:
./ftpuser.sh: line 39: [: too many arguments
./ftpuser.sh: line 42: [: too many arguments
./ftpuser.sh: line 45: [: too many arguments
./ftpuser.sh: line 48: [: too many arguments
./ftpuser.sh: line 51: [: too many arguments
You must give (non-root) uid and gid
__________________
Vive la France! Welcome to Sarkoworld...

Geändert von ljungi (15.10.2006 um 19:08 Uhr).
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.10.2006, 19:23 Nach oben    #2
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

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).
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.10.2006, 22:47 Nach oben    #3
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.214
Standard

danke!
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.10.2006, 06:17 Nach oben    #4
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

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
Scheint mir so, dass durch das Copy&Paste überall die Variable $Quota an den Aufruf übergeben wird, obwohl in der Bedingung eine andere Variable geprüft wird!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.10.2006, 10:57 Nach oben    #5
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

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
Anmerkung vllt spät, aber besser als nie ^^ Ausgelegt is das alles für nen Pure-FTP Daemon
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.02.2007, 18:10 Nach oben    #6
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

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:
echo "Der User wird angelegt. Bitte gib nun das Passwort 2x ein.";
pure-pw useradd $Name -u ftpuser -d $Path
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.02.2007, 18:51 Nach oben    #7
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.183
Standard

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
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.02.2007, 18:54 Nach oben    #8
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

Genau das wollt ich bleiben lassen.
Bei meinem letzten Versuch lief der FTP dann nimmer
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.02.2007, 19:18 Nach oben    #9
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.183
Standard

Zitat:
Zitat von ljungi Beitrag anzeigen
Genau das wollt ich bleiben lassen.
Bei meinem letzten Versuch lief der FTP dann nimmer
ich kann dir eine bau-anleitung geben, muss ich bei gelgenheit mal ruassuchen, im endeffekt notizen wie ich das nutze, mit TLS für eine verschlüsselung der passwörter beim login.
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.02.2007, 22:11 Nach oben    #10
Blubb... öfz
 
Benutzerbild von ljungi
 
Registriert seit: 16.03.2006
Ort: Berlin
Beiträge: 419
Standard

Das wäre nett.

Emailaddy schick ich dir gleich per PN
__________________
Vive la France! Welcome to Sarkoworld...
ljungi ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:37 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44