Automatisch Einträge in der leases.dhcpd löschen

BelneaHP

Lt. Junior Grade
Registriert
Okt. 2007
Beiträge
412
Hallo Zusammen,

ich bin auf der Suche nach der einfachsten Möglichkeit automatisch alle abgelaufene Einträge in der leases.dhcpd Datei zu löschen. Am besten via cronjob.

Mein eigentliches Problem ist der Aufbau der Datei, da die Einträge nicht immer gleich sind und meine Fähigkeiten als "parser" sehr begrenzt. z.B. ist der Hostname nicht immer dabei:
lease 192.168.1.1 {
starts 0 2017/09/30 08:02:54;
ends 5 2017/09/30 08:02:54;
hardware ethernet 00:50:04:53:D5:57;
uid 01:00:50:04:53:D5:57;
client-hostname "PC0001"
}

lease 192.168.1.2 {
starts 0 2017/09/30 08:02:54;
ends 5 2017/09/30 08:02:54;
hardware ethernet 00:50:04:53:D5:58;
}

Im Prinzip würde alles von "lease" bis zur ersten "}" löschen wollen, wenn der Wert "ends" in der Vergangenheit liegt.

Kann mir jemand dabei helfen?

Gruß
BelneaHP
 
Das hat doch keinen Sinn was du da machst. Eigentlich wird die leases sowieso ständig überschrieben, wenn dynamische IPs vergeben werden und warum sollte man statische Leases löschen wollen...

Bitte mehr Details warum du es machen willst. Ansonsten brauchst du für dein Vorhaben nur ein bisschen RegEx + Grep + AWK und fertig ist das Script.
 
Der Sinn ist ein sehr limitierter Festplattenspeicher auf dem System (besser: den Systemen), was sich in den nächsten Monaten auch nicht ändern wird. Die Festplatten liefen ständig voll was zur folge hatte, dass niemand mehr eine IP bekam. Als Zwischenlösung habe ich die Datei jeden Montag gelöscht, was jedoch in seltenen Fällen zu Problemen führte.

Darum soll es hier aber bitte nicht gehen. Hast Du einen Lösungsvorschlag?
 
Ihr habt Festplattenprobleme, die sich durch das Löschen der Lease-(text-)Datei lösen ?
Gibt es da nichts anderes, was ihr entfernen könnt, um die paar KB da automatisch verwalten zu lassen ?

Alternativ, warum löscht du die Datei nicht einfach Wöchentlich (oder wenns sein muss abendlich) per cron?
 
Kyze das ist genau das was ich vor Dir schrieb. Momentan löschen wir die Datei jede Woche, das hat aber einen internen Nebeneffekt den wir nicht mehr wollen. Auf dem Server läuft nichts anderes als ein DHCP.... aber das ist auch überhaupt nicht das Thema hier. Wenn Ihr wisst wie man meine Fragestellung beantwortet bitte ich euch mir zu helfen - wenn nicht ist's okay, aber bitte keine Grundsatzdiskussionen. Dankeschön.
 
Natürlich gibt's Probleme, wenn man die einfach löscht. Hier steht drin, welcher Client welche IP bekommen hat - löscht man das, werden IPs ggf doppelt vergeben, weil der dhcpd nun NICHT mehr weiß, wem er was vergeben hatte.

-1- Gibt es wirklich nichts anderes, was irgendwie verkleinert oder entfernt werden könnte? Stichwort alte Logfiles: Werden die komprimiert? Kann man die woanders hintun? Muß man die überhaupt behalten? Und so weiter.

-2- Möglichkeiten zum Umschreiben gibt es viele. Parsing ist nur eine. Wenn Du bereits Erfahrung hast mit irgendwas Programmatischem: Nimm das. sed(1) wäre eine Option; awk(1) eine andere. Man kann sich aber auch mit einer ggf eh schon installierten Umgebung was bauen (via bash, perl, php, python, was auch immer) wenn man von der jeweiligen Sprache Ahnung hatte.

Ich persönlich steh mit awk immer bissel auf Kriegsfuß und würde daher erstmal bei sed schauen.

Für Parsing... müßte man halt den Eingabestring in Token zerlegen. Ob man das jetzt komplett einliest und dann auseinanderbricht oder ob man zeichenweise liest und dann Zustände mitführt ("lease" gelesen? cr|lf gelesen? ";" gelesen? "}" gelesen?) oder irgendwas dazwischen ist dann egal. Das Ergebnis könnte dann in eine Struktur oder Objekt "Lease" mit allen Eigenschaften, die das jeweilige Lease halt hat oder nicht hat.
Dann noch eine Print()funktion dazu, welche eine Lease-Struktur in seiner Textform schreibt, mit lease ip {...} und den Trennzeichen dazu.

Übrig bleibt dann nur noch 'Einlesen, prüfen auf Expired-Status',neu schreiben'.

CAVEAT. Dieser Ansatz ist an dieser Stelle eher akademischer Natur. Es ist *unbekannt*, wie sich der dhcpd hinterher verhalten wird und/oder ob(was) für Probleme dadurch auftreten werden.

Platz schaffen ist *definitiv* die bevorzugte Option. Es betrifft ja nicht nur den DHCP, sondern das gesamte System, wenn Schreibvorgänge nicht mehr möglich sind. Und ich hoffe einfach mal, daß Speicherplatz für die Kiste nicht so hoffnungslos unterdimensioniert ist, daß mit Linux(kernel) und ISC dhcpd(plus Abhängigkeiten) dieser Platz bereits ausgeschöpft ist, wie es zwischen den Zeilen zu lesen scheint.
 
RalphS - nein, eigentlich gibt's normalerweise keine Probleme beim löschen dieser Datei, denn die Clients bekommen einfach automatisch wieder eine neue IP vom DHCP - keine doppelten Einträge. Der einzige Unterscheid zu vorher ist, dass es keine abgelaufenen Einträge mehr in der Datei gibt, was die Größe in unserem Falle mal eben von 8GB auf wenige MB schrumpfen lässt, bis alle Clients wieder eine IP haben und sich die Tabelle langsam wieder füllt. Das einzige Problem was wir haben ist dass es eine Authentifizierung anhand der IP gibt - wenn die plötzlich jemand anderes bekommt kommt es zu Fehlern.
Nochmal: Auf dem Server läuft nichts, es loggt sich niemand ein es gibt keine Logfiles außer die vom System. Das Ding hat eine 10GB Festplatte die zu 25% genutzt wird wenn die Datei leer ist / nicht existiert und irgendwann ist die Festplatte voll, weil die Leases die restlichen 7,5GB aufgefressen haben. Vergrößern wäre toll und einfach - aber nicht möglich.

Entschuldigt bitte wenn man genervt darauf reagiert, wenn es 3 Antworten gibt aber keine zum Thema.
 
Hm...was habt ihr denn für eine Leasedauer, wenn ich fragen darf? Oder sind das so viele Clients?

Deinen Worten zufolge - es gibt keine Probleme durchs Löschen der Lease-Datei -- müßte das ja dann eine Leasedauer in Stunden sein.

Ansonsten würd ich denken, daß es irgendwie irgendwoanders ein Problem gibt. 8GB+ nur für die Leases ist ein bissel arg viel.

Ganz abgesehen davon, daß die Verarbeitung davon... eine Weile dauern wird, wenn wegen Platzbedarf fürs Umschreiben nicht gleich ganz unmöglich.

Schau mal hier, ob Dich das in irgendeiner Form betreffen könnte.
 
RalphS - Leasedauer 3 Tage. Das Problem: Sehr viele und ständig wechselnde Geräte. Die Idee wäre dieses "Umschreiben" zu wieder wöchentlich zu machen, sodass es gar nicht so einer so größen Datei kommt.
 
@BelneaHP
Wenn ihr ständig wechselnde Clients habt, dann reduziert doch einfach die Leasedauer und die Einträge werden schneller ersetzt.
 
dalini erstens geht das nicht, weil unsere Authentifizierung 3 Tage gültig ist, deshalb muss es auch die IP sein, da beide verknüpft sind.
Zweitens würde das nicht helfen, da auch bei einer Leasedauer von 1 Sekunde erst alle 65.000 Leases genutzt werden, bevor jemand wieder eine alte IP bekommt ; zudem bleibt der alte Eintrag aber trotzdem in der Datei.
Jetzt haben wir 5 nicht verwertbare Antworten ... glaub das bringt hier nichts mehr.
Trotzdem danke.
 
Wird denn auch die Datei leases.dhcpd~ erzeugt? Die legt der dhcpd als temporäre Datei an, um damit stündlich die eigentliche leases.dhcpd zu überschreiben. Damit soll das unkontrollierte Wachstum der Datei verhindert werden. Sollte die leases.dhpd~ nicht vorhanden sein, deutet das auf ein Berechtigungsproblem hin (der dhcpd kann nicht in das Verzeichnis schreiben, nachdem er die Rechte beim Daemonstart gedroppt hat).
 
Zurück
Oben