Statische IP Adresse mit c# vergeben



  • Hallo,

    bin neu hier im forum und beim Programieren noch ein Grünschnabel.
    Und zwar hab ich folgendes Problem:

    Ich bastel an einem kleinen Netzwerk Tool für meinen Arbeitskolegen, und zwar ist das ganze in c# Konsolenbasiernd geschrieben.
    Mit dem Tool kann man die:

    IP Adresse auslesen
    IP Adresse freigeben
    IP Adresse anfordern
    Eine fest vorkonfigurierte Statische IP vergeben
    IP Adresse von statisch wieder in dynamisch umstellen

    bis jetzt alles kein Problem, funst auch alles super. Um das Tool noch ab zu runden, sollte ein Menüpunkt nicht fehlen.
    Und zwar sollte dem Anwender selbst überlassen werden welche statische IP er einträgt.

    zB.
    Bitte geben Sie die IP Adresse ein > return

    Bitte geben Sie die Subnetmask ein

    Ich hab lange nach einer gescheiten Lösung gesucht doch leider kam nichts brauchbares dabei rum.

    using System;
    using System.Diagnostics;
    using System.ComponentModel;
    using System.Text;

    namespace I_Pup
    {
    class Program
    {
    static void Main()
    {
    //Deklaration und Initialisierung einer Variable
    string Eingabe;

    //Beginn Schleife
    do
    {
    //Menü auf Konsole schreiben
    System.Console.WriteLine("\n\n\n████████████████████████████████████████████████████████████");
    System.Console.WriteLine("█ █");
    System.Console.WriteLine("█ I - Pup █");
    System.Console.WriteLine("█ Tool by obscho █");
    System.Console.WriteLine("████████████████████████████████████████████████████████████\n\n\n");
    System.Console.WriteLine("1 - Netzwerkeinstellungen auslesen");
    System.Console.WriteLine("2 - IP Adresse freigeben");
    System.Console.WriteLine("3 - IP Adresse erneuern");
    System.Console.WriteLine("4 - IP Adresse statisch eingeben");
    System.Console.WriteLine("5 - IP Adresse für Modem");
    System.Console.WriteLine("6 - IP IP Adresse dynamisch beziehen");
    System.Console.WriteLine("B - IP Programm beenden\n");
    System.Console.WriteLine("Wählen Sie: 1, 2, 3, 4, 5 oder B");

    //Eingabe des Benutzers
    Eingabe = Console.ReadLine();

    //Eingabe ausführen mit switch-Anweisung

    switch (Eingabe)
    {
    case "1":

    Console.WriteLine("\nNetzwerkeinstellungen werden ausgelesen\n\n");
    Process cmd = new Process();
    cmd.StartInfo.FileName = "ipconfig";
    cmd.StartInfo.Arguments = "/all";
    cmd.StartInfo.CreateNoWindow = false;
    cmd.StartInfo.UseShellExecute = false;
    cmd.Start();

    cmd.WaitForExit();

    break;

    case "2":

    Console.WriteLine("\nIP Adresse wird freigegeben\n");
    Console.WriteLine("\nBitte haben Sie ein wenig Gedult, dieser Vorgang kann ein paar Sekunden dauern\n\n");
    Process cmd1 = new Process();
    cmd1.StartInfo.FileName = "ipconfig";
    cmd1.StartInfo.Arguments = "/release";
    cmd1.StartInfo.CreateNoWindow = false;
    cmd1.StartInfo.UseShellExecute = false;
    cmd1.Start();

    cmd1.WaitForExit();

    break;

    case "3":

    Console.WriteLine("\nIP Adresse wird erneuert \n\n");
    Console.WriteLine("Bitte haben Sie ein wenig Gedult, dieser Vorgang kann ein paar Sekunden dauern\n\n");
    Process cmd2 = new Process();
    cmd2.StartInfo.FileName = "ipconfig";
    cmd2.StartInfo.Arguments = "/renew";
    cmd2.StartInfo.CreateNoWindow = false;
    cmd2.StartInfo.UseShellExecute = false;
    cmd2.Start();

    cmd2.WaitForExit();
    break;

    case "4":

    Console.WriteLine("Bitte geben Sie die IP Adresse ein\n\n");
    Eingabe = Console.ReadLine();
    break;

    Console.WriteLine("Bitte geben Sie die Subnetmask ein\n\n");
    Eingabe = Console.ReadLine();
    break;

    case "5":
    Console.WriteLine("\nBitte haben Sie ein wenig Gedult, dieser Vorgang kann ein paar Sekunden dauern\n\n");

    Process cmd4 = new Process();
    cmd4.StartInfo.FileName = "netsh";
    cmd4.StartInfo.Arguments = "interface ip set address LAN-Verbindung static 192.168.0.12 255.255.255.0";
    cmd4.StartInfo.CreateNoWindow = false;
    cmd4.StartInfo.UseShellExecute = false;
    cmd4.Start();

    cmd4.WaitForExit();

    Console.WriteLine("\nIP Adresse für Modemzugrif wurde vergeben\n");
    Console.WriteLine("Bitte geben Sie die IP 192.168.100.1 in die Adressleiste");
    Console.WriteLine("eines Internet-Browsers ein und bestätigen mit Return\n\n");
    Eingabe = Console.ReadLine();
    break;

    case "6":
    Console.WriteLine("\nBitte haben Sie ein wenig Gedult, dieser Vorgang kann ein paar Sekunden dauern\n\n");

    Process cmd5 = new Process();
    cmd5.StartInfo.FileName = "netsh";
    cmd5.StartInfo.Arguments = "interface ip set address LAN-Verbindung dhcp ";
    cmd5.StartInfo.CreateNoWindow = false;
    cmd5.StartInfo.UseShellExecute = false;
    cmd5.Start();

    cmd5.WaitForExit();

    Console.WriteLine("Netzwerkarte bezieht die IP Adresse dynamisch\n");
    Eingabe = Console.ReadLine();
    break;

    case "B":
    case "b":
    Console.WriteLine("Programm wird beendet\n\n");
    break;

    default:
    Console.WriteLine(Eingabe + " ist keine gueltige Eingabe!\n\n");
    break;
    }
    //Pausieren, damit man das Ergebniss sieht
    }
    while (Eingabe != "B" && Eingabe != "b");
    }

    }
    }

    Ich wäre für jeden brauchbaren Vorschlag sehr dankbar.
    Mein zweites Problem ist, wenn ich die Console starte hätte ich gerne, dass die direkt maximiert ist, allso groß dargestellt wird.

    Danke schon mal im voraus für nützliche Tipps. 😉

    Gruß obscho



  • Ich wäre für jeden brauchbaren Vorschlag sehr dankbar.

    Codetags verwenden



  • Da muss ich dem guten Knuddlbaer natürlich zustimmen 😃 Und wenn du das gemacht hast, könntest du eventuell auch noch eine konkrete Frage stellen 😉

    Was die Maximierung der Konsole betrifft, so musst du wohl oder übel auf die WinAPI zurückgreifen. Funktionen hierfür findest du wie immer bei solchen Dingen in der MSDN. Wenn du suchst, dann findest du auch schon Threads von anderen Leuten, die sowas gemacht haben...

    MfG


Anmelden zum Antworten