Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Shell Scripting zum Erzeugen und Speichern von .htaccess und .htpasswd Dateien mit variablen Verzeichnisnamen und Übergabe an Cronjob zur Automatisierung.

Frage Linux Debian

Mitglied: i-soft

i-soft (Level 1) - Jetzt verbinden

17.10.2014, aktualisiert 18.10.2014, 1532 Aufrufe, 5 Kommentare

Hallo Community,

ich habe mich hier im Forum neu angemeldet, weil ich auf meiner Arbeit an einem Problem arbeite, an dem ich mir momentan richtig die Zähne ausbeisse. Da ich vor kurzem erst meine Ausbildung zum Informatiker abgeschlossen habe und ich noch viel lernen muss, wage ich heute den Schritt in dieses Forum. Nun gut, also zu meinem Problem.

Ich habe vor kurzem eine Lernplattform für die Arbeit mit unseren Kunden auf ein Debian System installiert. Der Zugriff auf die Lernplattform (Webserver) erfolgt aus dem Internet heraus und wird durch htaccess geschützt. (Kunde wollte es so.) Da von seiten meines Unternehmens gewünscht wird, das jeder Kunde eine eigene Installation (mit eigenem Verzeichnisnamen) für die Lernplattform auf dem Server erhalten soll, muss jede einzelne Installation der Lernplattform mit einer .htaccess und .htpasswd Datei versehen werden.

Das habe ich auch alles gelöst bekommen, nur ich komme einfach nicht weiter bei der Automatisierung. Da ich jedesmal für einen Kunden, eine Installation vornehmen muss, wo ich diverse Arbeiten ausführen muss, wie ein neues Verzeichnis erstellen + zufälligen Verzeichnisnamen vergeben, Dateirechte vergeben, Datenbank erzeugen, Datenbank überprüfen, Datenbank Backup, Nutzer nach X Tagen inaktiv schalten und nach X Tagen löschen etc., habe ich ein Shell Script angelegt das soweit gut funktioniert.

Nur ich stehe momentan auf dem Schlauch, beim Einbinden der .htaccess und htpasswd Datei.

Beispiel:

Ich habe eine Abfrage im Shell Script eingebaut:

echo -e "Bitte geben Sie den Verzeichnisnamen des zu erstellenden Kunden an:"
read verzeichnis

Wenn nun das Verzeichnis erstellt wurde und die Installation abgeschlossen ist, so soll die .htaccess und die .htpasswd Datei ebenfalls für den Kunden neu erstellt werden.
Der Inhalt der .htaccess Datei soll in meinem Script selber durch eine Schleife ausgelesen werden und der Pfad zur .htpasswd Datei soll aus der Variablen $verzeichnis kommen, die ich vorher durch die Abfrage auf der Konsole eingegeben habe. Danach soll der komplette Inhalt in eine neue .htaccess Datei geschrieben werden. Beide Dateien .htaccess und .htpasswd sollen im jeweiligen Kundenverzeichnis liegen.

So in etwa (Ist nur ein Beispiel/keine Gewähr auf Richtigkeit):

while [ Bedingung ??????]
do
echo "AuthType Basic">.htaccess
echo "AuthName "Zugriff verweigert - Bitte User und Passwort eingeben"">.htaccess
echo "AuthUserFile /var/www/$verzeichnis/.htpasswd">.htaccess
echo "Require valid-user">.htaccess
done

Danach soll dann ebenfalls die .htpasswd Datei erzeugt werden.

htpasswd -c /var/www/$verzeichnis/.htpasswd benutzername

Auch hier soll wieder die Variable $verzeichnis das neue Kundenverzeichnis sein und aus der vorherigen Abfrage durch Eingabe auf die Konsole stammen. Ich möchte das komplette Installationsszenario inklusive aller weiteren Arbeiten in einem Script verarbeiten um dann später dieses Script im Cronjob laufen zu lassen.

Ich hoffe es kann mir jemand auf die Sprünge helfen.

Mit freundlichen Grüßen

i-soft
Mitglied: SlainteMhath
LÖSUNG 17.10.2014, aktualisiert 18.10.2014
Moin,

ich weis nicht ob ich das jetzt ganz Verstanden habe...
01.
echo -e "Bitte geben Sie den Verzeichnisnamen des zu erstellenden Kunden an:" 
02.
read verzeichnis 
03.
 
04.
cat /alte/.htaccess | grep -v "AuthUserFile" > $verzeichnis/.htaccess 
05.
echo "AuthUserFile /var/www/$verzeichnis/.htpasswd"> $verzeichnis/.htaccess 
06.
 
07.
htpasswd -c /var/www/$verzeichnis/.htpasswd benutzername
Ohne Gewähr

lg,
Slainte
Bitte warten ..
Mitglied: i-soft
18.10.2014, aktualisiert um 13:14 Uhr
Hallo Slainte, liebe Community

vielen Dank für Deinen Lösungsansatz, das kommt dem schon sehr nahe. Ich habe gerade deine Lösung ausprobiert, sie funktioniert in etwa so wie es soll, nur das ich dann in der neuen .htaccess Datei eine Zeile zu stehen habe.

AuthUserFile /var/www/$verzeichnis(hier steht der Kundenverzeichnisname)/.htpasswd

Ich würde gern den kompletten Inhalt der .htaccess Datei haben wollen inklusive der oberen Zeile. Also so in etwa,

Inhalt der .htaccess Datei:

AuthType Basic
AuthName "Zugriff verweigert - Bitte User und Passwort eingeben
AuthUserFile /var/www/$verzeichnis(hier steht der Kundenverzeichnisname/.htpasswd
Require valid-user

Deswegen habe ich mir, wie oben die Lösung mit der Schleife ausgedacht, nur leider komme ich nicht drauf, da wenn ich versuche die Schleife durchlaufen zu lassen entweder ein Fehler rausgeschmissen wird bzw. er nur die letzte Zeile: Require valid-user in der neuen Datei zu stehen hat. Dann kam ich auf die Lösung das ich eine Schleife baue mit while read line.

Beispiel:

while read line
do
echo $line
done<alte-htaccess-datei

So bekomme ich alle Zeilen aus der alten Datei ausglesen, aber da funktioniert es wieder nicht mit dem variablen Verzeichnisnamen des Kunden, da nur die alte htaccess Datei durch die Schleife gejagt wird und dort ja der Inhalt 1 zu 1 übernommen wird. Meine nächster Lösungsansatz war eine for Zählschleife einer bestimmten Anzahl an Durchgängen.

z.B.

for now in 1
do
echo "AuthType Basic">htaccess
echo "AuthName "Zugriff verweigert - Bitte User und Passwort eingeben"">htaccess
echo "AuthUserFile /var/www/$verzeichnis(hier steht der Kundenverzeichnisname/.htpasswd">htaccess>htaccess
echo "Require valid-user">htaccess
done

Und wieder bekomme ich nur die letzte Zeile in der neuen Datei. Irgendwie funktioniert die Umleitung in die neue htaccess Datei nicht. Mir fehlt glaube ich noch irgendein Zusatz.

Ich freue mich auf weitere Lösungsvorschläge.

Mit freundlichen Grüßen

i-soft
Bitte warten ..
Mitglied: i-soft
18.10.2014 um 13:22 Uhr
Hallo liebe Community,

ich bin durch etwas rumprobieren selber auf eine Lösung gekommen. Es gibt vielleicht verschiedene Ansätze, hier nochmals vielen Dank an Slainte, aber meine Lösung genügt um mein Vorhaben zu realisieren.

Hier meine Lösung (als Beispiel):

echo -e "Bitte geben Sie das Verzeichnis an:"
read verzeichnis
for now in 1
do
echo "AuthType Basic"
echo "AuthName "Zugriff verweigert - Bitte User und Passwort eingeben""
echo "AuthUserFile /var/www/$verzeichnis/.htpasswd"
echo "Require valid-user"
done>/var/www/$verzeichnis/.htaccess

Über weitere Lösungsansätze würde ich mich sehr freuen.

Mit freundlichen Grüßen

i-soft
Bitte warten ..
Mitglied: colinardo
LÖSUNG 18.10.2014, aktualisiert 20.10.2014
Hallo i-soft,
@SlainteMhath hatte nur einen Mini-Fehler
in seinem Script, es fehlte in Zeile 5 des Scripts nur ein zusätzliches > Zeichen damit die Zeile stattdessen anhängt wird :
01.
echo "AuthUserFile /var/www/$verzeichnis/.htpasswd">>$verzeichnis/.htaccess 
Grüße Uwe
Bitte warten ..
Mitglied: i-soft
25.10.2014 um 13:31 Uhr
Hallo liebe Comunity,

ich habe nun auf der Arbeit das Script benendet und es funktioniert einwandfrei. Auch hier nochmals vielen Dank an colinardo für den Hinweis.

Vielen Dank an alle.

Grüße

i-soft
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
14 Tage alte Dateien automatisch löschen - Shell (1)

Frage von traller zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: Variablen aus .txt Dateien heraus ausgeben (5)

Frage von Tobiased zum Thema Batch & Shell ...

Windows 10
Windows 10: Dateien auf Netzlaufwerke speichern nicht möglich (7)

Frage von Wild-Wolf zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...