2016-07-05 10 views
1

Ich habe seltsame Situation, wo ich hätte IP-Adresse in bestimmtem Bereich einzufügen, gäbe es einen einfachen Weg, es anstelle dem Einsetzen 100s von IP-Adressemysql Einsatz IP-Adressbereich

Beispiel

manuell zu tun IP-Adressbereich - 33.44.0.1 bis 33.44.0.254

Tisch stucture

id, IP,  timestamp, timestamp, assigned, not_assigned 
1 33.44.0.1 2016-07-04 2016-07-04 0   1 

Wäre es eine Möglichkeit, es zu tun?

+2

Sie sollten eine Prozedur schreiben, entweder in Ihrer bevorzugten Anwendungssprache oder als gespeicherte Prozedur in MySQL. –

+1

Ich habe eine Antwort [hier] (http://stackoverflow.com/a/32020220) in 3 Formaten mit Hilfe von Peers geschrieben. Die Formate waren String, String mit CIDR und Int. – Drew

+0

Es hängt davon ab, was Sie mit "manuell" meinen - meinst du das wörtlich oder meinen Sie eine andere Art als eine Datenbankaufnahme pro eindeutige IP-Adresse? Wenn es Letzteres ist, haben Sie einige Auswahlmöglichkeiten, abhängig von der Konsistenz der Anfangs- und Endpunkte des Bereichs (dh passen sie immer in einen vollständigen Netzmaskenbereich) und können Sie eine Netzmaske oder einen ähnlichen Start-/Endbereich als Bedingung verwenden gegen später testen? – ldg

Antwort

1

können Sie ein Verfahren schaffen, dies zu tun: dieses Verfahren durch CALL insert_ips()

CREATE PROCEDURE `insert_ips`() 
BEGIN 

    DECLARE suffix INT DEFAULT 1; 

    WHILE suffix < 255 DO 
     INSERT INTO table1 VALUES (suffix, CONCAT('33.44.0.', suffix), NOW(), NOW(), 0, 1); 
     SET suffix = suffix + 1; 
    END WHILE; 

END 

Und den Lauf.

+0

Dies perfekt funktioniert..thank Sie Sir – upagna

+1

Ich brauche genau dasselbe, aber in IPv6, wenn ich es ausarbeiten werde ich es hier veröffentlichen. –

1

Versuchen Sie dies (vorausgesetzt, Sie verwenden PHP).
Das Konzept besteht darin, eine Art von Schleife zu verwenden, um Zahlen zwischen 1 und 254 zu generieren und sie an den letzten Abschnitt der IP-Adresse anzuhängen, und dann die generierte IP jedes Mal in die Datenbank einzufügen.

<?php 
    for($n = 1; n < 255; n++) { 
    $ip = '33.44.0.'.$n; 
    //code to insert into database here 
    } 
?> 
+0

Dies setzt genau eine volle Netzmaske voraus (/ 24), in welchem ​​Fall ich mich fragen würde, ob einfach 33.44.0.1/24 ausreichen würde - abhängig von der Fähigkeit der App, sie zu benutzen. (Offensichtlich trivial für komplexere Fälle, aber ich gehe davon aus, dass das OP nicht nach einer Schleife von 1 bis 254 in PHP fragt. Ich würde auch nicht vorschlagen, dass er 254 (+) insert-Anweisungen erstellt - wenn ich dein Beispiel wörtlich nehmen würde .) – ldg