Batch - Automatisiert den Computername ändern und anschließend in die Domäne aufnehmen
Änderungen:
28.04.2007 19:21
Grammatik / Rechtschreibfehler beseitigt.
29.04.2007 10:32
Text wurde von "bastla" und mir nochmal verfeinert.
30.05.2007 13:06
Der User -151kg- hat einen Fehler im meinem Script gefunden. Vielen Dank für den Hinweis...Das Problem habe ich eben gefixt.
02.12.2007
Erweiterung - Handling mehrerer MAC-Adressen in der IPConfig-Ausgabe Major0190/Biber.
Hallo zusammen,
auf Wunsch von "Biber" habe ich aus einem meiner Kommentaren ein Tutorial erzeugt. Diese Frage taucht in letzter Zeit einfach öfters auf.
Situation
Wer kennt es nicht: Man betreut ein Netzwerk mit mehreren Clients und ist es Leid, immer nach dem Image-Verteilen bzw. nach einer Neuinstallation zu jedem Rechner zu laufen, um den Computernamen zu ändern und danach in die Domäne einzubinden. Aber dafür gibt es eine Lösung!
Grundlagen im LAN (Allgemein)
Voraussetzung für dieses Vorhaben ist, dass sich mindestens eine Domäne im Netzwerk (LAN) befindet. Zusätzlich zum AD (Active Directory) muss ein DHCP - Server und ein RIS - Server laufen. Diese Dienste können entweder auf der gleichen Maschine laufen oder aber auf einzelne verteilt werden, je nach Auslastung und Clientanzahl!
Ab wann lohnt sich der Aufwand?
Also das kann man allgemein nicht sagen, aber ich denke, so ab 10 Clients würde ich den Aufwand treiben. Nach oben hin sehe ich keine Grenzen. Dort wird es dann eher eine Frage der Hardwarebegrenzung sein.
Wie wird der entsprechende Computername zugeordnet?
Als Grundlage dient die MAC – Adresse der Netzwerkkarte (NIC), da diese weltweit einmalig und somit prima als Basis für die Problemlösung geeignet ist.
Wo wird der Computername und die MAC - Adresse hinterlegt (+ Vorteile / Nachteile)?
Hier gibt es 2 Möglichkeiten: Grundsätzlich kann so was immer mit einer Datei (z.B. Textdatei) gelöst werden. Somit reicht ein einfacher Editor aus und die Datei ist später auch sehr anwenderfreundlich. Doch bei mehreren Computern (so ab 100 Clients) könnte die Datei unübersichtlich werden. Nicht nur das, wenn mehrere Leute an der Datei arbeiten, könnten unter bestimmten Umständen irgendwann mal mehrere Dateien existieren, und dann ist das Chaos vorprogrammiert.
Daher habe ich noch ein anderes Verfahren (war wahrscheinlich der 1000. Mensch, der auf die Idee gekommen ist) entwickelt. Voraussetzung ist ein Webserver (mit PHP Unterstützung) und ein MySQL-Server. Und zwar habe ich in einer SQL-Tabelle den Computer mit dazugehöriger MAC - Adresse gespeichert. Dadurch hat man die Chance, sich ein Webinterface zu programmieren. Dies setzt jedoch einige Kenntnisse in PHP und SQL voraus. Aber über diese Webanwendung können Datensätze hinzugefügt / geändert / gesucht / gelöscht werden. Je nach Belieben!
Vorbereitungen auf dem Server
Für das Aufnehmen eines Computers in die Domäne würde ich einen extra AD - Benutzer anlegen. Danach sollte der Benutzer noch der Gruppe „Kontooperatoren“ hinzugefügt werden.
Im Profil zusätzlich den Haken setzen, dass das Passwort nicht geändert werden kann! Somit wird die Sicherheit nicht ganz vernachlässigt!
Vorbereitungen auf dem Server für die Datei-Variante
Am einfachsten ist es vom Clientzugriff her gesehen, extra eine verstecke Freigabe zu erstellen, auf die „JEDER“ => „Lesezugriff“ hat (sowohl Freigaberechte als auch NTFS - Rechte). Damit ist die Freigabe vor Veränderungen aus dem Netzwerk geschützt! Dort kann nun eine Datei mit dem Namen „xyz.txt“ anlegt werden. Beim Eintragen von MAC – Adresse und dem dazugehörigen Computernamen genau ein Leerzeichen dazwischen lassen. Dadurch gibt es später beim Suchen keine Probleme. Für jede MAC - Adresse muss eine extra Zeile benutzt werden.
Beispiel:
Bitte diese Schreibweise beibehalten, da sonst der Batch (unten) das falsche Ergebnis ausgibt!
Vorbereitungen auf dem Server für die Datenbank-Variante
Zuerst sollten auf einem x-beliebigen Server ein Webserver mit PHP und ein MySQL-Server laufen. Zum Verwalten des MySQL-Servers eignet sich am Besten „phpMyAdmin“.
Downloads:
Für das Einrichten von PHP und MySQL gibt es genügend Tutorials im Internet.
Nun muss zuerst eine Datenbank erstellt werden. „DATENBANKNAME“ könnt Ihr durch Euren Wunschnamen ersetzen. Das SQL – Statement zum Erstellen der Datenbank sieht wie folgt aus:
Danach muss in der Datenbank noch eine Tabelle erstellt werden. In dieser werden dann später die entsprechenden Daten gespeichert. In einer Datenbank können beliebig viele Tabellen erstellt werden. „mac-adressen“ ist der Tabellename und kann von Euch beliebig verändert werden. Hier das SQL – Statement für das Erstellen der Tabelle:
Da später eine Tabellenabfrage (Datenbankabfrage) stattfindet, wird ein Benutzer benötigt. Nun könnte man sagen: „Ich benutze den MySQL root – Benutzer“, jedoch steht das PW später in der Batchdatei im Klartext drin!! Eine bessere Lösung ist, einen weiteren Benutzer anzulegen, der NUR Leserechte auf die Tabelle hat.
Dazu den phpMyAdmin aufrufen und als „root“ einloggen. Auf der Übersichtsseite den Punkt „Rechte“ (Mitte unten) anklicken.
Nun erscheint eine Übersicht mit den vorhandenen Benutzern. Darunter gibt es die Option, einen neuen Benutzer einzurichten => anklicken. Im darauf erscheinenden Formular die entsprechenden Daten eingeben und auf „OK“ klicken. Den Rest braucht Ihr zu diesem Zeitpunkt nicht beachten!
Auf der darauf erscheinenden Seite können nun Berechtigungen (global und / oder lokal) vergeben werden. In unserem Fall interessieren uns nur die Lokalen Berechtigungen! Dazu ungefähr in die Mitte scrollen (Datenbankspezifische Rechte) und im DropDown – Menü die Datenbank angeben, die vorher oben erstellt wurde. Nach der Auswahl wird automatisch die nächste Seite geladen. Hier muss der vorherige Schritt wiederholt werden, nur muss dieses Mal die vorher erstellte Tabelle ausgewählt werden. Die nächste Seite wird wieder automatisch geladen. Jetzt erscheint eine Übersicht mit „SELECT“ / „INSERT“… Bei „SELECT“ bitte alle Einträge markieren (SHIFT – Taste gedrückt halten) und dann mit „OK“ abschicken.
Voraussetzungen auf den Clients
Leider reichen die Windowsboardmittel nicht aus (egal bei welcher Variante). Aber Gott sei Dank gibt es die Windows Supporttools von WindowsXP (Download: http://www.microsoft.com/downloads/details.aspx?FamilyID=49ae8576-9bb9- ..). Daraus wird die netdom.exe benötigt. Die heruntergeladene Datei entpacken und aus der support.cab die EXE „netdom“ extrahieren. Diese EXE ermöglicht den Domänenbeitritt per Kommandozeile.
Für die Datenbank-Variante wird noch die EXE „mysql.exe“ gebraucht. Diese befindet sich im „bin“ – Ordner von MySQL.
Beide Dateien sollten beim Client im Verzeichnis „C:\WINDOWS\system32“ liegen. Bei der Imagevariante dürfte das kein Problem sein. Bei der RIS Variante gibt es auch eine Lösung (http://www.windows-unattended.de/unattended/referenz/oem_vertriebsverze ..).
1.Schritt: Einbinden der Datei
Ich habe die Variante mit dem Autostartordner gewählt. Beim Image dürfte es keine Probleme geben. Beim RIS - Server ist es etwas anders. Dazu muss in die *.sif Datei der entsprechende Eintrag getätigt werden:
Die „start.bat“ (Inhalt dieser Datei sind die folgenden Codezeilen) muss nach „$OEM$\$$“ gespeichert werden.
Nach der Installation per RIS bzw. nach dem Image wird der Rechner neugestartet. Nun wird wahrscheinlich automatisch ein Benutzer (braucht natürlich Adminrechte) angemeldet, sodass automatisch das Script gestartet wird.
2. Schritt: Dafür sorgen, dass die Batchdatei nur einmal ausgeführt wird
Dazu lasse ich eine leere Textdatei auf C: erzeugen und überprüfe dann immer, ob diese bereits existiert.
3. Schritt: Auslesen der MAC – Adresse
Nun wird mit einer einfachen FOR – Schleife die MAC – Adresse ausgelesen und in eine Variable geschrieben.
4a. Schritt: Auslesen des Computernamens anhand der MAC - Adresse (Dateivariante)
In der Variable "%pc%" steht nun der Computername. Der Pfad zur MAC-Datei muss natürlich durch Euren Pfad ersetzt werden.
4b. Schritt: Auslesen des Computernamens an Hand der MAC - Adresse (DB - Variante)
Hier kommt nun die mysql.exe zum Einsatz. In der Variable "%pc%" steht nun der Computername, der in der MySQL – Tabelle für diese MAC – Adresse hinterlegt ist.
Die groß geschriebenen Wörter sind durch Eure Werte zu ersetzen!
Erweiterung Dez. 2007 - Handling mehrerer MAC-Adressen in der IPConfig-Ausgabe.
Falls mehrere MAC-Adressen je Rechner vorkommen können, statt Schritt 3 und 4b diese Mimik:
siehe Kommentar/Querverweis von Biber weiter unten.
5. Schritt: Computernamen ändern
Jetzt kann der Computername geändert werden. In den folgenden Zeilen braucht nichts verändert zu werden, da dort die Variable "%pc%" eingebaut ist!
6. Schritt: Neustart einleiten
7. Schritt: Überprüfung, ob Domainabschnitt schon einmal ausgeführt wurde.
8. Schritt: Computer in die Domäne aufnehmen
Nachdem alle Netzlaufwerke getrennt sind, wird per netdom.exe der Computer in die Domäne aufgenommen. Die entsprechenden Stellen müssen natürlich wieder durch Eure Werte ersetzt werden.
Als Benutzer könnt ihr den oben erstellten AD - Benutzer verwenden! Zusätzlich habt Ihr die Option, den Computer gleich in eine OU zu verschieben.
9. Schritt: Ende
Nun noch die letzte Abfrage:
Bemerkung zur Datenbank-Variante:
Hierzu lässt sich noch per PHP ein Webinterface programmieren. Leider darf ich meines nicht herausgeben.
Anmerkung:
Ich möchte mich bei „Biber“ und „bastla“ bedanken. Sie haben auch einen Teil beigetragen!
Gruß
Dani
28.04.2007 19:21
Grammatik / Rechtschreibfehler beseitigt.
29.04.2007 10:32
Text wurde von "bastla" und mir nochmal verfeinert.
30.05.2007 13:06
Der User -151kg- hat einen Fehler im meinem Script gefunden. Vielen Dank für den Hinweis...Das Problem habe ich eben gefixt.
02.12.2007
Erweiterung - Handling mehrerer MAC-Adressen in der IPConfig-Ausgabe Major0190/Biber.
Hallo zusammen,
auf Wunsch von "Biber" habe ich aus einem meiner Kommentaren ein Tutorial erzeugt. Diese Frage taucht in letzter Zeit einfach öfters auf.
Situation
Wer kennt es nicht: Man betreut ein Netzwerk mit mehreren Clients und ist es Leid, immer nach dem Image-Verteilen bzw. nach einer Neuinstallation zu jedem Rechner zu laufen, um den Computernamen zu ändern und danach in die Domäne einzubinden. Aber dafür gibt es eine Lösung!
Grundlagen im LAN (Allgemein)
Voraussetzung für dieses Vorhaben ist, dass sich mindestens eine Domäne im Netzwerk (LAN) befindet. Zusätzlich zum AD (Active Directory) muss ein DHCP - Server und ein RIS - Server laufen. Diese Dienste können entweder auf der gleichen Maschine laufen oder aber auf einzelne verteilt werden, je nach Auslastung und Clientanzahl!
Ab wann lohnt sich der Aufwand?
Also das kann man allgemein nicht sagen, aber ich denke, so ab 10 Clients würde ich den Aufwand treiben. Nach oben hin sehe ich keine Grenzen. Dort wird es dann eher eine Frage der Hardwarebegrenzung sein.
Wie wird der entsprechende Computername zugeordnet?
Als Grundlage dient die MAC – Adresse der Netzwerkkarte (NIC), da diese weltweit einmalig und somit prima als Basis für die Problemlösung geeignet ist.
Wo wird der Computername und die MAC - Adresse hinterlegt (+ Vorteile / Nachteile)?
Hier gibt es 2 Möglichkeiten: Grundsätzlich kann so was immer mit einer Datei (z.B. Textdatei) gelöst werden. Somit reicht ein einfacher Editor aus und die Datei ist später auch sehr anwenderfreundlich. Doch bei mehreren Computern (so ab 100 Clients) könnte die Datei unübersichtlich werden. Nicht nur das, wenn mehrere Leute an der Datei arbeiten, könnten unter bestimmten Umständen irgendwann mal mehrere Dateien existieren, und dann ist das Chaos vorprogrammiert.
Daher habe ich noch ein anderes Verfahren (war wahrscheinlich der 1000. Mensch, der auf die Idee gekommen ist) entwickelt. Voraussetzung ist ein Webserver (mit PHP Unterstützung) und ein MySQL-Server. Und zwar habe ich in einer SQL-Tabelle den Computer mit dazugehöriger MAC - Adresse gespeichert. Dadurch hat man die Chance, sich ein Webinterface zu programmieren. Dies setzt jedoch einige Kenntnisse in PHP und SQL voraus. Aber über diese Webanwendung können Datensätze hinzugefügt / geändert / gesucht / gelöscht werden. Je nach Belieben!
Vorbereitungen auf dem Server
Für das Aufnehmen eines Computers in die Domäne würde ich einen extra AD - Benutzer anlegen. Danach sollte der Benutzer noch der Gruppe „Kontooperatoren“ hinzugefügt werden.
Im Profil zusätzlich den Haken setzen, dass das Passwort nicht geändert werden kann! Somit wird die Sicherheit nicht ganz vernachlässigt!
Vorbereitungen auf dem Server für die Datei-Variante
Am einfachsten ist es vom Clientzugriff her gesehen, extra eine verstecke Freigabe zu erstellen, auf die „JEDER“ => „Lesezugriff“ hat (sowohl Freigaberechte als auch NTFS - Rechte). Damit ist die Freigabe vor Veränderungen aus dem Netzwerk geschützt! Dort kann nun eine Datei mit dem Namen „xyz.txt“ anlegt werden. Beim Eintragen von MAC – Adresse und dem dazugehörigen Computernamen genau ein Leerzeichen dazwischen lassen. Dadurch gibt es später beim Suchen keine Probleme. Für jede MAC - Adresse muss eine extra Zeile benutzt werden.
Beispiel:
00-cd-34-56-78-r0-1a TEST01
34-32-vc-5b-42-33-5h TEST02
Bitte diese Schreibweise beibehalten, da sonst der Batch (unten) das falsche Ergebnis ausgibt!
Vorbereitungen auf dem Server für die Datenbank-Variante
Zuerst sollten auf einem x-beliebigen Server ein Webserver mit PHP und ein MySQL-Server laufen. Zum Verwalten des MySQL-Servers eignet sich am Besten „phpMyAdmin“.
Downloads:
PHP | http://www.php.net/downloads.php |
MySQL | http://dev.mysql.com/downloads/mysql/5.0.html#win32 |
phpMyAdmin | http://www.phpmyadmin.net/home_page/index.php |
Für das Einrichten von PHP und MySQL gibt es genügend Tutorials im Internet.
Nun muss zuerst eine Datenbank erstellt werden. „DATENBANKNAME“ könnt Ihr durch Euren Wunschnamen ersetzen. Das SQL – Statement zum Erstellen der Datenbank sieht wie folgt aus:
CREATE DATABASE 'DATENBANKNAME';
CREATE TABLE 'mac_adressen' (
'id' INT( 255 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'mac' TEXT NOT NULL ,
'pc_name' TEXT NOT NULL
) ENGINE = MYISAM ;
Dazu den phpMyAdmin aufrufen und als „root“ einloggen. Auf der Übersichtsseite den Punkt „Rechte“ (Mitte unten) anklicken.
Nun erscheint eine Übersicht mit den vorhandenen Benutzern. Darunter gibt es die Option, einen neuen Benutzer einzurichten => anklicken. Im darauf erscheinenden Formular die entsprechenden Daten eingeben und auf „OK“ klicken. Den Rest braucht Ihr zu diesem Zeitpunkt nicht beachten!
Auf der darauf erscheinenden Seite können nun Berechtigungen (global und / oder lokal) vergeben werden. In unserem Fall interessieren uns nur die Lokalen Berechtigungen! Dazu ungefähr in die Mitte scrollen (Datenbankspezifische Rechte) und im DropDown – Menü die Datenbank angeben, die vorher oben erstellt wurde. Nach der Auswahl wird automatisch die nächste Seite geladen. Hier muss der vorherige Schritt wiederholt werden, nur muss dieses Mal die vorher erstellte Tabelle ausgewählt werden. Die nächste Seite wird wieder automatisch geladen. Jetzt erscheint eine Übersicht mit „SELECT“ / „INSERT“… Bei „SELECT“ bitte alle Einträge markieren (SHIFT – Taste gedrückt halten) und dann mit „OK“ abschicken.
Voraussetzungen auf den Clients
Leider reichen die Windowsboardmittel nicht aus (egal bei welcher Variante). Aber Gott sei Dank gibt es die Windows Supporttools von WindowsXP (Download: http://www.microsoft.com/downloads/details.aspx?FamilyID=49ae8576-9bb9- ..). Daraus wird die netdom.exe benötigt. Die heruntergeladene Datei entpacken und aus der support.cab die EXE „netdom“ extrahieren. Diese EXE ermöglicht den Domänenbeitritt per Kommandozeile.
Für die Datenbank-Variante wird noch die EXE „mysql.exe“ gebraucht. Diese befindet sich im „bin“ – Ordner von MySQL.
Beide Dateien sollten beim Client im Verzeichnis „C:\WINDOWS\system32“ liegen. Bei der Imagevariante dürfte das kein Problem sein. Bei der RIS Variante gibt es auch eine Lösung (http://www.windows-unattended.de/unattended/referenz/oem_vertriebsverze ..).
Batchdatei
1.Schritt: Einbinden der Datei
Ich habe die Variante mit dem Autostartordner gewählt. Beim Image dürfte es keine Probleme geben. Beim RIS - Server ist es etwas anders. Dazu muss in die *.sif Datei der entsprechende Eintrag getätigt werden:
...
[GuiRunOnce]
%windir%\start.bat
...
Nach der Installation per RIS bzw. nach dem Image wird der Rechner neugestartet. Nun wird wahrscheinlich automatisch ein Benutzer (braucht natürlich Adminrechte) angemeldet, sodass automatisch das Script gestartet wird.
2. Schritt: Dafür sorgen, dass die Batchdatei nur einmal ausgeführt wird
Dazu lasse ich eine leere Textdatei auf C: erzeugen und überprüfe dann immer, ob diese bereits existiert.
@echo off & setlocal
::Wartezeit von 2 Minuten
ping 127.0.0.1 –n 120 >nul
if exist "C:\computer.txt" goto domain
....
3. Schritt: Auslesen der MAC – Adresse
Nun wird mit einer einfachen FOR – Schleife die MAC – Adresse ausgelesen und in eine Variable geschrieben.
...
for /f "tokens=2 delims=:" %%a in ('ipconfig /all ^| find "Physi"') do set mac=%%a
...
4a. Schritt: Auslesen des Computernamens anhand der MAC - Adresse (Dateivariante)
In der Variable "%pc%" steht nun der Computername. Der Pfad zur MAC-Datei muss natürlich durch Euren Pfad ersetzt werden.
...
for /f "tokens=2 delims= " %%b in ('type "\\server\freigabe$\mac.txt" ^|findstr "%mac%"') do set pc=%%b
...
4b. Schritt: Auslesen des Computernamens an Hand der MAC - Adresse (DB - Variante)
Hier kommt nun die mysql.exe zum Einsatz. In der Variable "%pc%" steht nun der Computername, der in der MySQL – Tabelle für diese MAC – Adresse hinterlegt ist.
...
for /f %%b in ('mysql.exe -h HOST -u BENUTZER -pPASSWORT -D DATENBANK --execute="select * from TABELLE where mac=trim(leading ' ' from lcase('%mac%'));" -s') DO SET pc=%%b
...
Erweiterung Dez. 2007 - Handling mehrerer MAC-Adressen in der IPConfig-Ausgabe.
Falls mehrere MAC-Adressen je Rechner vorkommen können, statt Schritt 3 und 4b diese Mimik:
siehe Kommentar/Querverweis von Biber weiter unten.
...
set "Mac="
:: Es werden alle MAC-Adressen des PC's ermittelt
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| find "Physi"') do call :setmac %%i
:: SQL-Query wird erstellt
Set "Stmt=select inventarnummer,mac_adresse from inventar where ucase(mac_adresse) in (%mac%)"
for /f %%b in ('mysql.exe -h localhost -u root -D LIZENZ --execute="%stmt%" -s') DO SET pc=%%b
...
....
goto :eof
:setmac
:: Es wird alle MAC-Adressen aneinandergereiht 'MAC1', 'MAC2', 'MAC3' usw.
:: und es wird dann wieder zum Caller-Aufruf zurückgesprungen
If "%mac%"=="" (set "Mac='%1'") else set "Mac=%mac%, '%1'"
goto :eof
5. Schritt: Computernamen ändern
Jetzt kann der Computername geändert werden. In den folgenden Zeilen braucht nichts verändert zu werden, da dort die Variable "%pc%" eingebaut ist!
...
REG add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
REG add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
...
6. Schritt: Neustart einleiten
...
echo ok >> „C:\computer.txt“
SHUTDOWN -r -f -t 10
GOTO ende
...
7. Schritt: Überprüfung, ob Domainabschnitt schon einmal ausgeführt wurde.
...
:domain
IF EXIST "C:\domain.txt" GOTO ende
...
8. Schritt: Computer in die Domäne aufnehmen
Nachdem alle Netzlaufwerke getrennt sind, wird per netdom.exe der Computer in die Domäne aufgenommen. Die entsprechenden Stellen müssen natürlich wieder durch Eure Werte ersetzt werden.
...
net use * /d /y
NETDOM join %computername% /Domain:DOMÄNE /UserD:BENUTZER /PasswordD:PASSWORT /OU:"OU=Computer,OU=TEST,DC=dt,DC=local"
...
9. Schritt: Ende
Nun noch die letzte Abfrage:
...
echo ok >>"C:\domain.txt"
shutdown -r -f -t 10
:ende
...
Hierzu lässt sich noch per PHP ein Webinterface programmieren. Leider darf ich meines nicht herausgeben.
Anmerkung:
Ich möchte mich bei „Biber“ und „bastla“ bedanken. Sie haben auch einen Teil beigetragen!
Gruß
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 57798
Url: https://administrator.de/contentid/57798
Ausgedruckt am: 21.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Ihr Lieben.
Aufgrund des schönen Artikels hier, habe ich mich dazu entschlossen auch mal was vernünftiges zu tun und dachte mir, hier das Webinterface "zu programmieren", da dieses ja hier noch fehlt. Ich habe es klein und einfach gehalten.
Ausbaufähig ist ja gewöhnlich alles!
Ihr benötigt dazu wie schon oben beschrieben einen PHP und MySQL fähigen Webserver.
Für lokale Zwecke empfehle ich das XAMPP Paket welches man unter http://www.apachefriends.org erhält. (Seite manchmal recht lahm). Es geht aber auchjeder andere Kombination die PHP,Mysql fähig ist.
Dann nur noch die Datei, die ich angehangen habe entpacken und den Ordner "macadressen" auf den Server ins Verzeichnis "htdocs" kopieren. Eine Datenbank anlegen. Meine heisst hier mac_adressen wo auch gleich die Tabelle "mac_adressen" drin zu finden ist mit den drei Feldern: "id", "mac" und "pc_name" wie oben schon im Beitrag erwähnt.
Eine Vorschau des Webinterfaces erhaltet Ihr unter:
http://www.ronnydrechsler.com/macadressen
(Dort könnt IHr auch schon ein bissel probieren.)
UND: Für Kritik bin ich gerne zu haben!
Mit freundlichem Gruß
Der Kugelschreiber
Download
Aufgrund des schönen Artikels hier, habe ich mich dazu entschlossen auch mal was vernünftiges zu tun und dachte mir, hier das Webinterface "zu programmieren", da dieses ja hier noch fehlt. Ich habe es klein und einfach gehalten.
Ausbaufähig ist ja gewöhnlich alles!
Ihr benötigt dazu wie schon oben beschrieben einen PHP und MySQL fähigen Webserver.
Für lokale Zwecke empfehle ich das XAMPP Paket welches man unter http://www.apachefriends.org erhält. (Seite manchmal recht lahm). Es geht aber auchjeder andere Kombination die PHP,Mysql fähig ist.
Dann nur noch die Datei, die ich angehangen habe entpacken und den Ordner "macadressen" auf den Server ins Verzeichnis "htdocs" kopieren. Eine Datenbank anlegen. Meine heisst hier mac_adressen wo auch gleich die Tabelle "mac_adressen" drin zu finden ist mit den drei Feldern: "id", "mac" und "pc_name" wie oben schon im Beitrag erwähnt.
Eine Vorschau des Webinterfaces erhaltet Ihr unter:
http://www.ronnydrechsler.com/macadressen
(Dort könnt IHr auch schon ein bissel probieren.)
UND: Für Kritik bin ich gerne zu haben!
Mit freundlichem Gruß
Der Kugelschreiber
Download
...und noch eine Erweiterung ist hier im Forum angesprochen und ergänzt worden:
Details siehe in diesem Beitrag: MAC auslesen und in mySQL abfragen
Grüße
Biber
- Der Umgang mit mehr als einer MAC-Adresse pro PC
Details siehe in diesem Beitrag: MAC auslesen und in mySQL abfragen
Grüße
Biber
Moin,
danke für die Vorarbeit - ihr habt mir hilfreiche Tipps gegeben.
Ich hab mal versucht, das Ganze (mit einer Textdatei mit den MAC-Adressen) vollautomatisiert unter Windows 7 64-bit Enterprise (32 Clients) und Windows Server 2008 R2 zum Laufen zu bringen. Das Ganze läuft nach dem Klonen (mit Acronis TrueImage) nach einem automatischen Neustart der Rechner ab, die IP-Adressen gibts über DHCP. Ziel der Aktion ist, nach jedem Klonen (Softwareverteilung) die Rechnernamen reproduzierbar zu vergeben. Außerdem wird noch ein Client-spezifisches Hintergrundbild kopiert und Windows aktiviert (wir haben einen KMS-Server in der Umgebung). Nach dem Vorgang zerstören die Rechner die Dateien mit den Passwörtern und fahren sich herunter.
Wie schon erwähnt, habe ich für die 32 Clients auf eine Textdatei mit den MAC-Adressen und Rechnernamen gesetzt, aber für alle Findigen dürfte es ja kein Problem sein, die oben gezeigte Datenbank-Variante einzubauen.
Was ich dazu brauche:
Die Neustarts erfolgen immer mit großer Verzögerung, damit man zur Fehlersuche auch mal noch schnell nachschauen kann, was denn jetzt nicht funktioniert hat
Und hier die Dateien:
danke für die Vorarbeit - ihr habt mir hilfreiche Tipps gegeben.
Ich hab mal versucht, das Ganze (mit einer Textdatei mit den MAC-Adressen) vollautomatisiert unter Windows 7 64-bit Enterprise (32 Clients) und Windows Server 2008 R2 zum Laufen zu bringen. Das Ganze läuft nach dem Klonen (mit Acronis TrueImage) nach einem automatischen Neustart der Rechner ab, die IP-Adressen gibts über DHCP. Ziel der Aktion ist, nach jedem Klonen (Softwareverteilung) die Rechnernamen reproduzierbar zu vergeben. Außerdem wird noch ein Client-spezifisches Hintergrundbild kopiert und Windows aktiviert (wir haben einen KMS-Server in der Umgebung). Nach dem Vorgang zerstören die Rechner die Dateien mit den Passwörtern und fahren sich herunter.
Wie schon erwähnt, habe ich für die 32 Clients auf eine Textdatei mit den MAC-Adressen und Rechnernamen gesetzt, aber für alle Findigen dürfte es ja kein Problem sein, die oben gezeigte Datenbank-Variante einzubauen.
Was ich dazu brauche:
- NETDOM (ist unter Win 7 etwas umständlicher, gut und knapp beschrieben unter http://techblog.wanierke.de/2009/11/04/howto-install-netdom-for-windows ... Der zweite dort gezeigte Schritt wird in der Batch-Datei ausgeführt s.u.
- CPAU http://www.joeware.net/freetools/tools/cpau/index.htm
- Optional: Um das Hintergrundbild dann automatisch zu aktivieren z.B. das Programm WALLPAPER http://mystuff.clarke.co.nz/MyStuff/wallpaper.asp
Ablauf
- Zur Vorbereitung des Klonens/Image-Erstellen melde ich den Rechner von der Domäne ab und gebe ihm den Namen "NEU".
- Auf dem Rechner gibt es einen lokalen Admin ("ADMINLOKAL", Passwort "PASSWORTADMINLOKAL").
- In der Domäne "DOMÄNE" ist ein Domänencontroller "SERVER" mit der IP 111.111.111.111. Dort gibt es einen Administrator "DOMÄNENADMINUSER" mit dem Kennwort "DOMÄNENADMINPASSWORT" (Dieser muss Domänen-Administrator sein, um die Anmeldung durchführen zu können)
- In die Datei XYZ.TXT die MAC-Adressen und die Rechnernamen eintragen.
- Auf dem Client KOPIEREN.BAT ausführen:
- Dabei wird auf den Rechner START.BAT, CPAU.EXE, XYZ.TXT, DEL.BAT kopiert in meinem Beispiel auf E:\DOM\ Es empfiehlt sich, kein Verzeichnis auf C: (oder wo sonst Windows installiert ist) zu nehmen, da es ggf. mit den Rechten Probleme gibt.
- Außerdem müssen ein paar Registry-Einträge gesetzt werden, der eine geht leider nur per REG-Datei (wegen der Anführungszeichen), das Ganze in einer Batch-Datei sieht so aus:
- Jetzt nur noch den Rechner herunterfahren und das Image zum Klonen anfertigen. Nach der Verteilung des Images sollten die SIDs der Rechner geändert werden (macht bei mir Acronis True Image) und alle Rechner neu starten.
- Die Rechner starten ein paar Mal neu mit START.BAT, nach ca. 10-15 Minuten ist alles vorbei Dabei wird in einem
- Schritt als lokaler Admin angemeldet, der Rechnername an Hand der MAC-Adresse herausgefunden und geändert
- Schritt als lokaler Admin angemeldet, der Rechner an der Domäne angemeldet
- Schritt als Admin in der Domäne angemeldet, das Hintergrundbild kopiert und Windows aktiviert, schließlich die "Selbstzerstörungsroutine" gesetzt
- Schritt das Verzeichnis mit den ganzen Daten (u.a. Admin-Passwörter usw.!!!) gelöscht und der Rechner heruntergefahren
Die Neustarts erfolgen immer mit großer Verzögerung, damit man zur Fehlersuche auch mal noch schnell nachschauen kann, was denn jetzt nicht funktioniert hat
Und hier die Dateien:
XYZ.TXT
Die Datei mit den Mac-Adressen und Rechnernamen, getrennt mit einem Leerzeichen.00-26-55-43-AE-02 RECHNERNAME1
00-26-55-43-AE-03 RECHNERNAME2
00-26-55-43-AE-04 RECHNERNAME3
KOPIEREN.BAT
Diese Datei muss auf dem Client vor dem letzten Herunterfahren als Administrator ausgeführt werden (Kontextmenü -> Als Administrator ausführen...)md e:\dom
copy \\server\images\dom\start.bat e:\dom /Y
copy \\server\images\dom\cpau.exe e:\dom /Y
copy \\server\images\dom\xyz.txt e:\dom /Y
copy \\server\images\dom\del.bat e:\ /Y
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "1" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "ADMINLOKAL" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d "NEU" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserPassword /t REG_SZ /d "PASSWORTADMINLOKAL" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "PASSWORTADMINLOKAL" /f
REG import \\server\images\dom\run.reg
RUN.REG
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"START"="e:\\dom\\cpau.exe -u ADMINLOKAL -p PASSWORTADMINLOKAL -ex \"e:\\dom\\start.bat >> e:\\dom\\ausgabe.txt\""
START.BAT
Diese Datei wird mehrfach ausgeführt. Um Fehler zu finden und den Ablauf zu steuern, wird ein kleines Protokoll in der Datei MAC.TXT geführt. In der Datei AUSGABE.TXT findet sich dann das komplette Batch-Protokoll.set log=e:\dom\mac.txt
REM Fallauswahl
if exist "%log%" (for /f "tokens=1 delims=," %%s in ('type "%log%" ^|findstr "domainbeitritt"') do goto ende)
if exist "%log%" (for /f "tokens=1 delims=," %%s in ('type "%log%" ^|findstr "namegeaendert"') do goto domain)
::Nameermitteln
if exist "%log%" del %log%
echo Ping durchführen (Wartezeit 2')
::Wartezeit von 2 Minuten
ping 127.0.0.1 -n 120 >nul
REM im FOlgenden den Server anpingen zwecks Netzwerkverbindung
ping 111.111.111.111
ping SERVER
:: Es werden alle MAC-Adressen des PC's ermittelt
for /f "tokens=2 delims=: " %%a in ('ipconfig /all ^| find "Physi"') do echo %%a>> %log%
echo *******MAC ermitteln********
echo alle MAC-Adressen %mac%
for /f "tokens=2 delims=: " %%a in ('ipconfig /all ^| find "Physi"') do echo %%a
echo *******Rechnername ermitteln********
for /f "tokens=1 delims=," %%s in ('type "%log%"') do (for /f "tokens=2 delims= " %%b in ('type "e:\dom\xyz.txt" ^|findstr "%%s"') do if not "%%b"=="" set pc=%%b)
if "%pc%"=="" goto macfehler
echo Rechnername ist %pc%
echo Rechnername ist %pc% >> "%log%"
echo *******Rechnername ändern********
REG add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
REG add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
echo namegeaendert %date% %time%>> "%log%"
::neu starten
SHUTDOWN -r -f -t 30
GOTO :EOF
:domain
REM Abschnitt für Beitritt zur Domäne
::Wartezeit von 2 Minuten
ping 127.0.0.1 -n 120 >nul
REM im FOlgenden den Server anpingen zwecks Netzwerkverbindung
ping 111.111.111.111
ping SERVER
echo Der Domäne beitreten...
net use * /d /y
start /w pkgmgr /iu:RemoteServerAdministrationTools-Roles-AD-DS-SnapIns;RemoteServerAdministrationTools-Roles-AD-DS;RemoteServerAdministrationTools-Roles-AD;RemoteServerAdministrationTools-Roles;RemoteServerAdministrationTools
NETDOM join %computername% /Domain:DOMÄNE /UserD:DOMÄNENADMINUSER /PasswordD:DOMÄNENADMINPASSWORT
echo domainbeitritt %date% %time%>> "%log%"
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "1" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v ForceAutoLogon /t REG_SZ /d "1" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "DOMÄNENADMINUSER" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d "DOMÄNE" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "DOMÄNENADMINPASSWORT" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserPassword /t REG_SZ /d "DOMÄNENADMINPASSWORT" /f
::Autostart löschen
REG delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v START /f
REG add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v loeschen /t REG_SZ /d "e:\del.bat" /f
:: ******** Hintergrundbild
copy e:\dom\desktopbilder\%computername%.bmp c:\windows\desktop.bmp
:: ********* Windows aktivieren
cscript %windir%\system32\slmgr.vbs /ipk WINDOWS-KEY
ping 127.0.0.1 -n 5 >nul
cscript %windir%\system32\slmgr.vbs /skms KMSSERVER:1688
ping 127.0.0.1 -n 5 >nul
cscript %windir%\system32\slmgr.vbs /ato
SHUTDOWN -r -f -t 30
GOTO :ende
:macfehler
echo MAC wurde in Liste nicht gefunden
echo MAC wurde in Liste nicht gefunden>>%log%
goto ende
:ende
echo Alles erledigt!
DEL.BAT
Die Datei zum Löschen der ganzen anderen Dateien (mit den Admin-Passwörtern!!!!).rd e:\dom /S /Q
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "0" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v ForceAutoLogon /t REG_SZ /d "0" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d "DOMÄNE" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserPassword /t REG_SZ /d "" /f
REG add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "" /f
:ende
::Autostart löschen
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v loeschen /f
SHUTDOWN -s -f -t 30
Habe folgendes getan:
Jedoch startet bei mir der PC dann nicht mehr bzw will die ganze Zeit Starthilfe ausführen.
Hat sich erledigt. Mein Computername war länger als 15 Zeichen..
@echo off
set /p PC="Computername eingeben:"
REG add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
REG add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
echo "Computer bitte neu starten"
set /p PC="Computername eingeben:"
REG add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
REG add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d %pc% /f
REG add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d %pc% /f
echo "Computer bitte neu starten"
Jedoch startet bei mir der PC dann nicht mehr bzw will die ganze Zeit Starthilfe ausführen.
Hat sich erledigt. Mein Computername war länger als 15 Zeichen..