tende
Goto Top

Dynamische IP in htaccess-Datei ersetzen

Hallo zusammen

Bin ganz neu und habe schon des öfteren gute Tipps auf dieser Seite gefunden. Leider kommen ich mit meinem Problem nicht weiter, darum habe ich mir erlaubt mich anzumelden und einfach mal nachzufragen ob einer mir helfen kann.

Worum gehts: Ganz einfach, ich will in meiner htaccess-Datei die bei meinem Domainhoster liegt mit meiner aktuellen dynamischen IP-Adresse aktuallisieren. Meine Homepage soll erstmal für alle gesperrt werden und nur dann wenn ich es will, diese halt per Batchdatei freigeben indem ich meine akuelle IP-Adresse in die htaccess-Datei reinschreiben lasse.

Um meine aktuelle IP-Adresse auf dem System zu speichern oder in die Zwischenablage zu kopieren, benutze ich das Programm BarrMon.exe. Mit dem Befehl "start C:\Programme\BarrMon\BarrMon.exe D:\Aktuelle_IP.txt" speichere ich die IP auf d: ab in der Datei "Aktuelle IP.txt". Mit dem Befehl "start C:\Programme\BarrMon\BarrMon.exe clipboard" wird die aktuelle IP in die Zwischenablage kopiert.

Soweit, sogut, nun weis ich aber nicht wie man die IP- aus der Zwischenablage oder aus der Textdatei auslesen und dann in untenstehende htaccess-Datei reinschreiben kann.

.htaccess-Datei für Web-Verzeichnis /service
AuthType Basic
AuthName "Service-Bereich"
AuthUserFile /usr/verwaltung/web/.htusers
Require valid-user
Order deny,allow
Deny from all
<-Hier soll die Anweisung "Allow from"samt meiner aktuelle IP-Adresse rein.
Satisfy any

Das mit dem Ftp-Upload habe ich auch schon hinbekommen:

FTP-Upload.bat

ftp.exe -n -i -s:daten.ftp
exit

Inhalt der daten.ftp-Datei:

OPEN ftp..de
USER
passwort
cd webseiten
send d:\htaccess
disconnect
quit

Ich weis das es da den for-Befehl gibt für das Auslesen von Text in Dateien, leider kommen nach dem Befehl immer soviele Zusatzzeichen die mich irgendwie leicht verwirren face-wink. Außerdem weis ich nicht wie das mit der Angabe geht, wo welches Zeichen oder Wort in welcher Zeile und welcher Spalte ausgelesen bzw. ersetzt werden kann. Das ist mir irgendwie alles zu hoch. Ich beneide die Leute darum die sowas können. Habe mich nun mehrere Stunden am Stück bemüht, Infos für Anfänger zu finden mit denen ich auch was anfangen kann.

Ich hoffe man kann mir ein bischen helfen. Ist ja eigentlich wenn mans kann keine große Sache.

Dank schonmal im Vorraus.

MfG Dirk

Content-Key: 49638

Url: https://administrator.de/contentid/49638

Printed on: April 23, 2024 at 11:04 o'clock

Member: bastla
bastla Jan 23, 2007 at 20:18:00 (UTC)
Goto Top
Hallo Dirk und willkommen im Forum!

Eine einfache Lösung könnte so aussehen:

Vorbereitung:
Erzeuge eine Datei "vor.txt" mit dem Inhalt vor der IP-Adresse - aus Deinem Beispiel oben also:
AuthType Basic
AuthName "Service-Bereich"  
AuthUserFile /usr/verwaltung/web/.htusers
Require valid-user
Order deny,allow
Deny from all
Allow from 
- dabei nicht auf die Leerstelle hinter "Allow from " vergessen!
Erzeuge eine zweite Datei "nach.txt" mit dem Inhalt nach der IP-Adresse, derzeit also nur
Satisfy any
Falls diese Zeile auch vor dem "Allow from " stehen dürfte (kann ich - zumindest derzeit - nicht abschätzen), wäre es noch einfacher. Ev benötigst Du in der Datei "nach.txt" am Anfang eine Leerzeile - einfach austesten.

Durchführung:
copy /y vor.txt + Aktuelle_IP.txt + nach.txt htaccess
Hinweis: Am Ende dieser entstandenen "htaccess" steht ein Byte mit dem ASCII-Wert 26 (dez) - bitte testen, ob das ein Problem darstellt. Ansonsten wär's das gewesen.

HTH
bastla
Member: tende
tende Jan 23, 2007 at 20:59:06 (UTC)
Goto Top
Nabend bastle

Danke erstmal für die schnelle Antwort. Also das sieht schonmal richtig gut aus. Mal ne Frage: Warum machen die anderen User das mit dem Texte auslesen immer so kompliziert, also mit diesen for-Befehl und den ganzen Zusatzzeichen? Kann das sein das das mit dem 4DOS zusammen hängt? Kann aber eigentlich nicht da ich gerade sehe das 4DOS kein Standard von Microsoft ist.

Also die ausgebene Datei hat am Ende so ein quadratisches Zeichen, ich glaube das meintest du mit dem ASCII-Wert 26 (dez). Ob das nun einen Einfluss hat auf die ganze Datei weis ich noch nicht, aber man könnte es doch irgend wie mit einem Befehl löschen oder? Ist das eigentlich ein Bug oder warum wird das da angehängt?

Besten Dank erstmal.
PS: Wie lange beschäftigst du dich schon mit programmieren? Nur so aus reiner Neugierde face-wink
MfG Dirk
Member: bastla
bastla Jan 23, 2007 at 22:29:28 (UTC)
Goto Top
Hallo tende!

Warum machen die anderen User das mit dem Texte auslesen immer so kompliziert, also mit diesen for-Befehl und den ganzen Zusatzzeichen?
Zu diesen "anderen" Usern würde ich mich durchaus auch zählen. face-wink
Warum FOR? Damit erzeugt man in Batch eine Schleife (einen zu wiederholenden Programmteil) - so kann zB beim Bearbeiten von Textdateien jede Zeile einzeln behandelt werden (um beispielsweise aus einer Liste von Dateinamen für jede einzelne Datei eine Aktion ausführen zu können - etwa das aktuelle Datum in den Namen einfügen). Bei Deiner Aufgabenstellung ist eine solche Vorgangsweise nicht unbedingt erforderlich.

...so ein quadratisches Zeichen ... Ist das eigentlich ein Bug oder warum wird das da angehängt?
It's not a bug, it's a feature: Damit wird das Dateiende angezeigt. Dazu habe ich übrigens noch eine Idee: Schreib direkt nach dem "copy" noch ein "/b"

PS: Wie lange beschäftigst du dich schon mit programmieren?
Schon seit dem letzten Jahrtausend ... face-wink Sagt Dir "Sinclair ZX Spectrum" etwas?

Grüße
bastla
Member: Biber
Biber Jan 23, 2007 at 23:03:08 (UTC)
Goto Top
Moin tende,

Warum machen die anderen User das mit dem Texte auslesen immer so kompliziert?
Habe auch eben zum ersten Mal gesehen, dass es ja viel einfacher geht und weinte bitterlich.

Ausnahmsweise würde ich diesem Fall einer mehrzeiligen Lösung den Vorzug geben,
weil es dann eventuell etwas pflegbarer wird.
Ich würde die aktuelle IP ermitteln (GetIP.bat-Beispiel u.a. hier im Forum), in eine Variable %MyIP% speichern und alles in einer Batchdatei abfackeln.

::----------WriteNewHtAccess.bat
@echo off & Setlocal 
:: Set IP=[aus IPConfig-Ausgabe ermitteln, z.B.
for /f "delims=: tokens=2" %%i in ('IPConfig^|find "IP-A"') do @set myIP=%%i  
(Echo AuthType Basic
Echo AuthName "Service-Bereich"  
Echo AuthUserFile /usr/verwaltung/web/.htusers
Echo Require valid-user
Echo Order deny,allow
Echo Deny from all
Echo Allow from %myIP%
Echo Satisfy any) >htaccess

Finde ich lesbarer als diese Copy/b-Lösung.
Dafür ist allerdings eine FOR-Anweisung drin... *zugeb*

Gruß
Biber
Member: bastla
bastla Jan 23, 2007 at 23:23:36 (UTC)
Goto Top
@Biber

Dafür ist allerdings eine FOR-Anweisung drin... *zugeb*
Ist uns doch allen schon passiert (ich hab' mich ja auch schon geoutet ...) face-wink

Wenn's wirklich nur die paar Zeilen in der "htaccess" sein sollen, gebe ich dir völlig Recht. Wenn die sich andererseits praktisch nie ändern sollten, kann ich weiterhin ganz gut mit der "Klebe"-Variante leben (wobei ich mich immer noch frage, ob man nicht vielleicht doch die letzte Zeile auch noch oben reinpacken könnte).

Meine Grundidee war ansonsten: Nimm, was schon mal da ist, und baue nur den "missing link" ein - eine Vorgehensweise aus dem Volkshochschulkurs "Angewandte Faulheit" ... face-wink

Und, ganz im Ernst: für die analytische Feinarbeit verlasse ich mich gerne darauf, dass Du schon noch vorbeischauen wirst.

Grüße
bastla
Mitglied: 16568
16568 Jan 24, 2007 at 00:48:22 (UTC)
Goto Top
Ich versteh' Euch ehrlich gesagt alle nicht...

Warum doktert Ihr hier an einem Hamster mit Äxten rum? face-big-smile

Er soll sich doch bei DynDNS einen Account sichern.
Dann die DynDNS-Adresse in der .htaccess eintragen.
Der Server löst die IP auf, tada...


Aufwand:
1 Minute, um einen Account zu registrieren, und 1 Minute, um das automatische Update-Tool zu installieren.


Lonesome Walker
PS: Biber, von Dir hätte ich mehr als 'nen Batch erwartet face-wink
Member: tende
tende Jan 24, 2007, updated at Oct 17, 2012 at 14:46:47 (UTC)
Goto Top
Hallo Biber, bastla und Lonesome_Walker

Nochmals besten Dank für eure Mühen. Ich sehe aber gerade das ich vergessen habe mitzuteilen, das ich über einen Router ins Internet gehe. Damit wird das mit der IP-Adresse auslesen über IP-Config nicht funktionieren, wenn das so vorgesehen ist mit deiner Batch, Biber. Soweit ich weis kann man mit windowsinternen Mitteln die dynamische IP hinter einem Router nicht auslesen, sondern brauch eine Webseite die einem diese IP anzeigt, dann auslesen und weiterverarbeiten, aber wem sag ich das, bist doch der Biber face-wink. Darum benutze ich auch das Programm BarrMon.exe. Das mit dieser Lösung auf dieser Seite ProviderIP des DSL Routers auslesen... geht bei meinem Router nicht.

Und zu DynDNS: das hatte ich auch schon überlegt, nur muss man sich da auch wieder anmelden und dann läuft ja die eigene IP irgendwie darüber. Wird da nicht protokolliert welche Seiten ich angesurft habe oder verstehe ich die Funktion jetzt irgendwie falsch? Ich bin da nämlich vorsichtig mit der ganzen Anmelderei.

MfG Dirk
Mitglied: 16568
16568 Jan 24, 2007 at 11:23:24 (UTC)
Goto Top
DynDNS anmelden, Tool laden.

Tool mit den Daten des Accounts füttern.

Wird nix mitprotokolliert; was denn auch?
Da hängt ein Router dazwischen, und dann ist es schon Essig mit Benutzer-Daten.
Können schließlich mehrere User dahinter sitzen...

Außerdem:
Das Tool könntest Du Dir sogar selbst nachschreiben, gibt nämlich den Quelltext dazu, weil opensource.
Somit nix mit Ausspionieren face-wink


Lonesome Walker
Member: tende
tende Jan 24, 2007 at 11:55:07 (UTC)
Goto Top
Hi Walker

Achso läuft das, mit einem Tool. Ich dachte das läuft direkt über diese Seite. Naja, werds mir mal näher anschauen.

Ich kann mich nur wiederholen, die Leute die solche Sachen tiefgreifender verstehen, beneide ich. Bin zwar schon ein paar Jährchen im Netz, aber bei mir muss es einfach funktionieren, obwohl ichs natürlich geil fände wenn ich programmieren könnte. Aber dafür fehlt mir irgendwie die Ausdauer.

Dank dir und noch einen schönen Tag.

MfG Dirk