Script zum automatischen setzen und entfernen von hosts-einträgen

rethus

Erfahrenes Mitglied
Hallo Leute,
ich suche eine Möglichkeit folgendes unter windows zu tun:

Ein Benutzer (Windows OS) soll eine einzelne Datei starten, welche dann folgendes im Hintergrund ausführt:

  1. Anfrage an eine zuvor definierte Adresse (mein Server mit fester IP) - erhält als Rückgabewert eine anderen IP (meine derzeit dynamische Adresse)
  2. Setzen der Dynamischen Adresse als Auflösung zum Domainnamen domain.xx
  3. Rückgabe der Meldung, dass domain.xx nun in der hosts eingetragen wurde.
  4. Bei erneuten Aufruf das entfernen dieses Eintrags, inkl. Meldung dass der Eintrag entfernt wurde.

Sinn und zweck ist, dass ich externen Zugriff auf meinen lokalen Entwicklungsserver geben möchte, die dort eingerichtete Software aber beispielsweise auf domain.xx eingestellt ist.

Wie kann man so etwas am besten unter Windows programmieren?
 
Ich weiß nicht, ob das auch mit normalen Batch-Dateien geht (ich schätze aber schon), aber mit nem Groovy-Skript is das fix gemacht. Dafür braucht man allerdings Java und Groovy. Groovy zu verteilen ist kein Thema, die Jar ist knapp 6MB groß. Aber wenn auf dem Zielrechner kein Java drauf is, dann haste auch nix von. Batch wäre von daher schon besser.
 
Danke für deine Idee, und den geschilderten Ansatz. Es müsste aber zwingend mit Board-Mitteln gehen, welche bereits in allen Windows-Versionen enthalten sind.
 
Hi

liegt das Problem bei den nötigen Befehlen oder bei der Vorgehensweise?

Prinzip:
Lies die komplette Hostdatei ein eine Liste aus structs(Name-IP) ein
Entfern alle Listeneinträge mit domain.xx
Versuch, über den Server die neue iP zu bekommen.
Wenn das geklappt hat, füg einen neuen Listeneitrag dazu.
Schreib die komplette Datei neu, aus der Liste raus.
 
Das Schreiben der hosts-Datei sehe ich weniger als Problem an. Die alte Datei kopieren (Backup) und dann einfach einen neuen Eintrag anhängen. Beim Löschen einfach die aktuelle Datei löschen und die Backup-Datei wieder hinschieben. Das ist also ganz easy mit echo und cp gemacht. Mir fällt aber keine Möglichkeit ein einen HTTP Request per Batch abzusetzen und ich finde im Netz auch nix wirkliches, nur jede Menge VBScript-Ansätze, die (bei mir) nicht funktionieren.
 
Gut wäre halte ine Lösung, wo ich z.B. vorab angebe welche Adresse aufgerufen werden soll, oder ein Textfeld in die der User das selbst eingibt.
Ziegruppe sind technisch unbedarfte Windows-User, also muss es so einfach und verständlich wie möglich sein....

Unter linux wäre dass kein Ding... shellscript, mit kdialog und fertig... bei windows kenn ich mich nicht so aus. Wäre daher für jeden tipp dankbar
 
Du kannst mit AutoIt dir ganz flott was basteln, sogar mit GUI. Die Zielperson braucht kein AutoIt installiet zu haben, da man die Skripte auch kompilieren kann und so eine stinknormale exe-Datei bekommt. Damit wär das kein Thema.
 
An meinem Arbeitsplatz gibt es ein Programm, welches diesen Vorgang oder zumindest einen sehr ähnlichen vornimmt. Es handelt sich hierbei um ein VB-Script. Da mir persönlich aber nur die vbe und nicht die vbs-Datei vorliegt, kann ich dir leider nicht mit Code-Schnipseln aushelfen. Wichtig ist jedoch mit VB scheint es schnell gemacht zu sein.
 
Zurück