<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.sachsen.schule/dwiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3AKirmse%2Fdelixs-hostadd</id>
	<title>Benutzer:Kirmse/delixs-hostadd - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sachsen.schule/dwiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3AKirmse%2Fdelixs-hostadd"/>
	<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/delixs-hostadd&amp;action=history"/>
	<updated>2026-05-02T13:19:49Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Delixs</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/delixs-hostadd&amp;diff=7246&amp;oldid=prev</id>
		<title>Kirmse: Überarbeitung Script: mehrfacher Aufruf wird jetzt sauber abgefangen</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/delixs-hostadd&amp;diff=7246&amp;oldid=prev"/>
		<updated>2009-06-18T16:32:41Z</updated>

		<summary type="html">&lt;p&gt;Überarbeitung Script: mehrfacher Aufruf wird jetzt sauber abgefangen&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 18. Juni 2009, 18:32 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l218&quot;&gt;Zeile 218:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 218:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# um z.B. versehentliches mehrfaches Aufrufen des Scriptes abzufangen:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;$mesg = $ldap-&amp;gt;search(&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          base   =&amp;gt; &quot;cn=$pcname,cn=$poolname,cn=$teilnetz,cn=DHCP Config,$ldap_base&quot;, &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          filter =&amp;gt; &#039;objectClass=dhcpHost&#039; );&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Wenn der Host gefunden wird  dann Abbruch&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if (scalar ($mesg-&amp;gt;entries) &amp;gt; 0) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  die &quot;Abbruch: Der Host $pcname ist schon im LDAP eingetragen!\n&quot;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;          &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# jetzt tragen wir (endlich) den Host ein&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# jetzt tragen wir (endlich) den Host ein&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$mesg = $ldap-&amp;gt;add(&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$mesg = $ldap-&amp;gt;add(&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l225&quot;&gt;Zeile 225:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 234:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     dhcpHWAddress  =&amp;gt; &amp;quot;ethernet $mac&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     dhcpHWAddress  =&amp;gt; &amp;quot;ethernet $mac&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     dhcpStatements =&amp;gt; &amp;quot;fixed-address $ip&amp;quot; ] );  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                     dhcpStatements =&amp;gt; &amp;quot;fixed-address $ip&amp;quot; ] );  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# wenn Fehlercode, dann das Script mit Fehlermeldung sterben lassen&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# wenn Fehlercode, dann das Script mit Fehlermeldung sterben lassen &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(nur dann!)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$mesg-&amp;gt;code and die $mesg-&amp;gt;error;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$mesg-&amp;gt;code and die $mesg-&amp;gt;error;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kirmse</name></author>
	</entry>
	<entry>
		<id>https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/delixs-hostadd&amp;diff=7245&amp;oldid=prev</id>
		<title>Kirmse: Script zum Eintragen von DHCP-Hosts in den LDAP</title>
		<link rel="alternate" type="text/html" href="https://wiki.sachsen.schule/dwiki/index.php?title=Benutzer:Kirmse/delixs-hostadd&amp;diff=7245&amp;oldid=prev"/>
		<updated>2009-06-18T12:13:59Z</updated>

		<summary type="html">&lt;p&gt;Script zum Eintragen von DHCP-Hosts in den LDAP&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== delixs-hostadd ==&lt;br /&gt;
&lt;br /&gt;
* Dieses Script dient dazu, DHCP-Hosts im LDAP einzutragen&lt;br /&gt;
&lt;br /&gt;
* Parameter: --pool oder -p, --tnetz oder -t, --mac oder -m, --rechner oder -r, --ip oder i, --help oder -h &lt;br /&gt;
&lt;br /&gt;
* Aufruf: delixs-hostadd -p mathe -r aachen -m aa:bb:cc:12:ef:28&lt;br /&gt;
&lt;br /&gt;
Die Parameter Pool (entspricht Raum), Rechnername und MAC-Adresse sind zwingend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== das Script ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use warnings; &lt;br /&gt;
use strict;&lt;br /&gt;
&lt;br /&gt;
use Net::LDAP;&lt;br /&gt;
use Getopt::Long;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
my ($ldap, $ldap_base, $pass, $entry, $mesg, $poolname, $vorgabe_teilnetz,&lt;br /&gt;
    $pcname, $mac, $teilnetz, $ip, $minimum, $maximum, $min, $max, &lt;br /&gt;
    $dhcpRange, $drei_oktetts, @oktetts, $my_oktett, $temp);&lt;br /&gt;
    &lt;br /&gt;
#--------- Konfigurationsbereich --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
$vorgabe_teilnetz = &amp;#039;10.100.0.0&amp;#039;;   # Vorgabe fuer das Teilnetz&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Initialisieren der Variablen fuer die Parameter&lt;br /&gt;
$pcname     = &amp;#039;&amp;#039;;&lt;br /&gt;
$poolname   = &amp;#039;&amp;#039;;&lt;br /&gt;
$mac        = &amp;#039;&amp;#039;; &lt;br /&gt;
$teilnetz   = &amp;#039;&amp;#039;;&lt;br /&gt;
$ip         = &amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
# wir holen uns zuerst die Parameter,&lt;br /&gt;
# falls --help, dann Ausgabe der Hilfe (siehe &amp;amp;help) und beenden&lt;br /&gt;
GetOptions(&amp;#039;rechner=s&amp;#039; =&amp;gt; \$pcname,&lt;br /&gt;
           &amp;#039;pool=s&amp;#039;    =&amp;gt; \$poolname,&lt;br /&gt;
           &amp;#039;mac=s&amp;#039;     =&amp;gt; \$mac,&lt;br /&gt;
           &amp;#039;tnetz=s&amp;#039;   =&amp;gt; \$teilnetz,&lt;br /&gt;
           &amp;#039;ip=s&amp;#039;      =&amp;gt; \$ip,&lt;br /&gt;
           &amp;#039;help&amp;#039;      =&amp;gt; \&amp;amp;help);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#--------- formale Ueberpruefung der uebergebenen Parameter -----------------&lt;br /&gt;
&lt;br /&gt;
# Wenn kein Parameter -r oder --rechner uebergeben wurde, dann Abbruch&lt;br /&gt;
if ($pcname eq &amp;#039;&amp;#039;) {&lt;br /&gt;
  die &amp;quot;Abbruch: es wurde kein Name fuer den Rechner uebergeben!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn der Rechnername nicht den (meinen) Konventionen entspricht, dann Abbruch&lt;br /&gt;
unless ($pcname =~ /^[a-zA-Z]\w{1,10}$/) {&lt;br /&gt;
  die &amp;quot;Abbruch: Der Name $pcname fuer den Rechner ist nicht korrekt!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn kein Parameter -p oder --poolname uebergeben wurde, dann Abbruch&lt;br /&gt;
if ($poolname eq &amp;#039;&amp;#039;) {&lt;br /&gt;
  die &amp;quot;Abbruch: es wurde kein Name fuer die Rechnergruppe uebergeben!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn der Poolname nicht den (meinen) Konventionen entspricht, dann Abbruch&lt;br /&gt;
unless ($poolname =~ /^[a-zA-Z]\w{1,10}$/) {&lt;br /&gt;
  die &amp;quot;Abbruch: Der Name fuer die Rechnergruppe ist nicht korrekt!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn kein Parameter -m oder --mac uebergeben wurde, dann Abbruch&lt;br /&gt;
if ($mac eq &amp;#039;&amp;#039;) {&lt;br /&gt;
  die &amp;quot;Abbruch: es wurde keine MAC-Adresse uebergeben!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn die MAC-Adresse nicht das richtige Format hat, dann Abbruch&lt;br /&gt;
unless ($mac =~ /^\w\w:\w\w:\w\w:\w\w:\w\w:\w\w$/) {&lt;br /&gt;
  die &amp;quot;Abbruch: Die MAC-Adresse ist nicht korrekt!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn Parameter Teilnetz uebergeben, dann kontrollieren&lt;br /&gt;
unless ($teilnetz eq &amp;#039;&amp;#039;) {&lt;br /&gt;
  # ob richtiges Format &lt;br /&gt;
  unless ($teilnetz =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.0$/) {&lt;br /&gt;
    die &amp;quot;Abbruch: Das Teilnetz $teilnetz ist keine gueltige Angabe!\n&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
# Wenn der Parameter nicht uebergeben&lt;br /&gt;
else {&lt;br /&gt;
  # dann setzen wir das Teilnetz&lt;br /&gt;
  $teilnetz = $vorgabe_teilnetz;  &lt;br /&gt;
}  &lt;br /&gt;
&lt;br /&gt;
# Wenn Parameter IP uebergeben, dann kontrollieren&lt;br /&gt;
unless ($ip eq &amp;#039;&amp;#039;) {&lt;br /&gt;
  # ob richtiges Format &lt;br /&gt;
  unless ($ip =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) {&lt;br /&gt;
    die &amp;quot;Abbruch: Das IP $ip hat nicht das richtige Format!\n&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Wenn wir keine root-Rechte haben, dann Abbruch&lt;br /&gt;
if ($&amp;gt; != 0) { # siehe $EFFECTIVE_USER_ID,$EUID&lt;br /&gt;
  die &amp;quot;Abbruch: das Script muss mit root-Rechten ausgefuehrt werden!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wir holen uns die Such-Basis ($ldap_base) aus der ldap.conf&lt;br /&gt;
open DATEI, &amp;#039;&amp;lt;&amp;#039;, &amp;#039;/etc/ldap/ldap.conf&amp;#039; &lt;br /&gt;
  or die &amp;quot;Abbruch: konnte ldap.conf nicht oeffnen, $!\n&amp;quot;;&lt;br /&gt;
while (my $zeile = &amp;lt;DATEI&amp;gt;) {&lt;br /&gt;
  if ($zeile =~ m/^\s*base\s+(\w.*\w)\s*$/i) {&lt;br /&gt;
    $ldap_base = $1;&lt;br /&gt;
    last;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
close DATEI;&lt;br /&gt;
&lt;br /&gt;
# da wir (spaeter) in den LDAP schreiben wollen, brauchen wir noch das Passwort&lt;br /&gt;
open DATEI, &amp;#039;&amp;lt;&amp;#039;, &amp;#039;/etc/ldap.secret&amp;#039; &lt;br /&gt;
  or die &amp;quot;Abbruch: konnte ldap.secret nicht oeffnen, $!\n&amp;quot;;&lt;br /&gt;
$pass = &amp;lt;DATEI&amp;gt;;&lt;br /&gt;
chomp($pass);&lt;br /&gt;
close DATEI;&lt;br /&gt;
&lt;br /&gt;
# wir verbinden uns mit dem LDAP&lt;br /&gt;
$ldap = Net::LDAP-&amp;gt;new(&amp;#039;127.0.0.1&amp;#039;, version =&amp;gt; 3) or die &amp;quot;Abbruch: $@&amp;quot;;&lt;br /&gt;
$ldap-&amp;gt;bind( dn =&amp;gt; &amp;quot;cn=admin, $ldap_base&amp;quot;, password =&amp;gt; $pass)&lt;br /&gt;
  or die &amp;quot;Abbruch: konnte mich nicht mit dem LDAP verbinden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# wir ueberpruefen, ob das Teilnetz im LDAP existiert &lt;br /&gt;
$mesg = $ldap-&amp;gt;search(base   =&amp;gt; &amp;quot;cn=$teilnetz,cn=DHCP Config,$ldap_base&amp;quot;,&lt;br /&gt;
                      filter =&amp;gt; &amp;quot;cn=$teilnetz&amp;quot;);&lt;br /&gt;
#wenn wir keinen Eintrag erhalten haben, dann Abbruch&lt;br /&gt;
if (scalar ($mesg-&amp;gt;entries) == 0) {&lt;br /&gt;
  die &amp;quot;Abbruch: Das Teilnetz $teilnetz existiert nicht im LDAP!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wir ueberpruefen, ob der Pool im LDAP existiert&lt;br /&gt;
$mesg = $ldap-&amp;gt;search(&lt;br /&gt;
          base   =&amp;gt; &amp;quot;cn=$poolname,cn=$teilnetz,cn=DHCP Config,$ldap_base&amp;quot;, &lt;br /&gt;
          filter =&amp;gt; &amp;quot;cn=$poolname&amp;quot;,&lt;br /&gt;
          attrs  =&amp;gt; &amp;#039;dhcpRange&amp;#039; );&lt;br /&gt;
# Wenn der Pool nicht gefunden wird  dann Abbruch&lt;br /&gt;
if (scalar ($mesg-&amp;gt;entries) == 0) {&lt;br /&gt;
  die &amp;quot;Abbruch: Der Pool $poolname existiert nicht im LDAP!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# wir holen uns den dhcpRange (die beiden IPs)&lt;br /&gt;
$entry     = ($mesg-&amp;gt;entries)[0];              # nur ein Element in der Liste&lt;br /&gt;
$dhcpRange = $entry-&amp;gt;get_value(&amp;#039;dhcpRange&amp;#039;);   &lt;br /&gt;
&lt;br /&gt;
# wir holen uns die ersten 3 Oktetts der IP&lt;br /&gt;
($minimum, $maximum) = split /\s+/, $dhcpRange;              # am Leerzeichen splitten  &lt;br /&gt;
if ($minimum =~ /^\s*(\d{1,3}\.\d{1,3}\.\d{1,3})\.(\d{1,3})\s*$/) {&lt;br /&gt;
  $drei_oktetts = $1; &lt;br /&gt;
  $min          = $2;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  die &amp;quot;Abbruch: der dhcpRange vom Pool $poolname konnte nicht ausgewertet werden!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($maximum =~ /^\s*\d{1,3}\.\d{1,3}\.\d{1,3}\.(\d{1,3})\s*$/) {&lt;br /&gt;
  $max          = $1;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  die &amp;quot;Abbruch: der dhcpRange vom Pool $poolname konnte nicht ausgewertet werden!\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Wenn die IP uebergeben wurde&lt;br /&gt;
unless ($ip eq &amp;#039;&amp;#039;) {&lt;br /&gt;
  # dann testen, ob die IP zum Teilnetz passt&lt;br /&gt;
  ($temp) =  $teilnetz =~ /^\s*(\d{1,3}\.\d{1,3})/ ; &lt;br /&gt;
  unless ( $ip =~ /^$temp/ ) {&lt;br /&gt;
    die &amp;quot;Abbruch: Die IP \&amp;quot;$ip\&amp;quot; passt nicht zum Teilnetz \&amp;quot;$teilnetz\&amp;quot;!\n&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  # dann testen, ob die IP zu diesem Pool gehoert&lt;br /&gt;
  unless ( $ip =~ /^$drei_oktetts/ ) {&lt;br /&gt;
    die &amp;quot;Abbruch: Die IP \&amp;quot;$ip\&amp;quot; passt nicht zum Pool \&amp;quot;$drei_oktetts\&amp;quot;!\n&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  # wir holen uns von dem Pool alle DHCP-Hosts&lt;br /&gt;
  $mesg = $ldap-&amp;gt;search(&lt;br /&gt;
            base   =&amp;gt; &amp;quot;cn=$poolname,cn=$teilnetz,cn=DHCP Config,$ldap_base&amp;quot;, &lt;br /&gt;
            filter =&amp;gt; &amp;#039;objectClass=dhcpHost&amp;#039;,&lt;br /&gt;
            attrs  =&amp;gt; &amp;#039;dhcpStatements&amp;#039; );&lt;br /&gt;
  # dann holen wir uns von allen dhcpStatements die IP / das letzte Oktett&lt;br /&gt;
  @oktetts = ();&lt;br /&gt;
  if (scalar $mesg-&amp;gt;entries &amp;gt; 0) {&lt;br /&gt;
    foreach my $entry ($mesg-&amp;gt;entries) {&lt;br /&gt;
      $temp = $entry-&amp;gt;get_value(&amp;#039;dhcpStatements&amp;#039;);&lt;br /&gt;
      if ($temp =~ /^fixed-address\s*\d{1,3}\.\d{1,3}\.\d{1,3}\.(\d{1,3})$/) {&lt;br /&gt;
        push @oktetts, $1; &lt;br /&gt;
      } &lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
  # dann sortieren wir die Liste, groesste Zahl ist vorn  &lt;br /&gt;
  @oktetts = sort { $b &amp;lt;=&amp;gt; $a } @oktetts;&lt;br /&gt;
  if (scalar @oktetts == 0) {&lt;br /&gt;
    $my_oktett = $min;&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    $my_oktett = $oktetts[0] + 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # wir testen, ob $my_oktett kleiner als die Obergrenze von dhcpRange ist&lt;br /&gt;
  if ($my_oktett &amp;gt; $max) {&lt;br /&gt;
    die &amp;quot;Abbruch: die Obergrenze von dhcpRange wurde ueberschritten!\n&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # wir bauen uns die IP&lt;br /&gt;
  $ip = $drei_oktetts . &amp;#039;.&amp;#039; . $my_oktett;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# jetzt tragen wir (endlich) den Host ein&lt;br /&gt;
$mesg = $ldap-&amp;gt;add(&lt;br /&gt;
          dn   =&amp;gt; &amp;quot;cn=$pcname,cn=$poolname,cn=$teilnetz,cn=DHCP Config,$ldap_base&amp;quot;,&lt;br /&gt;
          attr =&amp;gt; [ objectClass    =&amp;gt; [&amp;#039;top&amp;#039;, &amp;#039;dhcpHost&amp;#039;],&lt;br /&gt;
                    cn             =&amp;gt; $pcname,&lt;br /&gt;
                    dhcpHWAddress  =&amp;gt; &amp;quot;ethernet $mac&amp;quot;,&lt;br /&gt;
                    dhcpStatements =&amp;gt; &amp;quot;fixed-address $ip&amp;quot; ] ); &lt;br /&gt;
# wenn Fehlercode, dann das Script mit Fehlermeldung sterben lassen&lt;br /&gt;
$mesg-&amp;gt;code and die $mesg-&amp;gt;error;&lt;br /&gt;
&lt;br /&gt;
# wir trennen uns vom LDAP&lt;br /&gt;
$ldap-&amp;gt;unbind;&lt;br /&gt;
&lt;br /&gt;
# Ausgabe auf der Konsole (Rueckmeldung)&lt;br /&gt;
print &amp;quot;Der DHCP-Host \&amp;quot;$pcname\&amp;quot; wurde in den LDAP eingetragen.\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
################### Programm-Ende #####################################&lt;br /&gt;
&lt;br /&gt;
# Wenn Parameter -h uebergeben wurde, dann Hilfe ausgegeben und beenden&lt;br /&gt;
sub help&lt;br /&gt;
{&lt;br /&gt;
   print &amp;quot;Hilfe muss noch erstellt werden.\n&amp;quot;;&lt;br /&gt;
   exit (0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
__END__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kirmse</name></author>
	</entry>
</feed>