Network Changing Tool

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Network Changing Tool

    Huhu, ich habe mir erlaubt ein Programm zuschreiben, was jeglich ein Kommandozeilen Befehl vereinfacht. Und ich dies nicht mit hilfe einer Batch datei verwirklichen wollte. Ich bitte euch darum, den Code zu bewerten. Bzw Verbesserungvorschläge des Codes und der Art und Weise. Das Programm benutze ich selber, da ich mit 2 Netzen zu tun habe. (WLAN - Nachbarn & Ethernet - Home)

    PHP-Quellcode

    1. #!/usr/bin/perl
    2. use strict;
    3. use warnings;
    4. use diagnostics;
    5. my $input;
    6. my ($tmp,$tmp1,$tmp2,$counter);
    7. my ($NAME,$HOME,$DNS,$SUB,$GATE);
    8. my ($readline,$dir);
    9. my $split1;
    10. my @tmp;
    11. $input = 1;
    12. while (not($input =~ /^\s*exit\s*$/i))
    13. {
    14. if ($input =~ /^\s*change\s+(.*)\s*$/i)
    15. {
    16. $split1 = $1;
    17. if (-f $split1)
    18. {
    19. open(FH,$split1) or die "FATAL ERROR: On Reading File!\n";
    20. foreach $readline (<FH>)
    21. {
    22. if ($readline =~ /^\s*NAME\=(.+)\s*$/i) { $NAME = $1; }
    23. if ($readline =~ /^\s*HOME\=(.+)\s*$/i) { $HOME = $1; }
    24. if ($readline =~ /^\s*GATE\=(.+)\s*$/i) { $GATE = $1; }
    25. if ($readline =~ /^\s*DNS\=(.+)\s*$/i) { $DNS = $1; }
    26. if ($readline =~ /^\s*SUB\=(.+)\s*$/i) { $SUB = $1; }
    27. }
    28. if ($NAME and $HOME and $DNS and $SUB and $GATE)
    29. {
    30. $counter = 0;
    31. print "\> Setting Ip Adress on \"$NAME\" :";
    32. $tmp = `netsh interface ip set address "$NAME" static $HOME $SUB $DNS 1`;
    33. if ($tmp =~ /^\s*OK\s*/i)
    34. {
    35. print "OK\n";
    36. $counter++;
    37. }
    38. else
    39. {
    40. print "Error...\n";
    41. }
    42. print "\> Delete DNS on \"$NAME\" :";
    43. $tmp = `netsh interface ip delete dns "$NAME" all`;
    44. if ($tmp =~ /^\s*OK\s*/i)
    45. {
    46. print "OK\n";
    47. $counter++;
    48. }
    49. else
    50. {
    51. print "Error...\n";
    52. }
    53. print "\> Add DNS on \"$NAME\" :";
    54. $tmp = `netsh interface ip add dns "$NAME" $DNS index=1`;
    55. if ($tmp =~ /^\s*OK\s*/i)
    56. {
    57. print "OK\n";
    58. $counter++;
    59. }
    60. else
    61. {
    62. print "Error...\n";
    63. }
    64. }
    65. else
    66. {
    67. print "\> ERROR: Config File was Incorrect!\n";
    68. }
    69. }
    70. else
    71. {
    72. print "\> ERROR: File not found!\n";
    73. }
    74. if ($counter eq 3)
    75. {
    76. print "OK, Network Settings Changed...".$counter."\/3 Steps OK\n";
    77. }
    78. else
    79. {
    80. print "Error, Network Settings could not changed... ".$counter."\/3 Steps OK\n";
    81. }
    82. }
    83. if ($input =~ /^\s*dir\s*$/i)
    84. {
    85. $counter=0;
    86. opendir(FH, "./");
    87. @tmp = readdir(FH);
    88. foreach $NAME (@tmp)
    89. {
    90. if ($NAME =~ /^\s*(.+)\.ini\s*$/i)
    91. {
    92. $tmp2 = $1."\.ini";
    93. open(FH2,$tmp2) or print "ERROR: On Reading File!\n";
    94. $tmp1 = <FH2>;
    95. if ($tmp1 =~ /^\s*\:\:NETWORK\:\:(.+)\s*$/i)
    96. {
    97. if ($1 eq 0)
    98. {
    99. print "\> ".$NAME." \n";
    100. }
    101. else
    102. {
    103. print "\> ".$NAME." - ".$1."\n";
    104. }
    105. $counter++;
    106. }
    107. close(FH2);
    108. }
    109. }
    110. closedir(FH);
    111. if ($counter < 1)
    112. {
    113. print "\> No Configuration File Found!\n";
    114. }
    115. else
    116. {
    117. print "OK, ".$counter." Configuration Files found...\n";
    118. }
    119. }
    120. if (($input =~ /^\s*help\s*$/i) or ($input =~ /^\s*\?\s*$/i))
    121. {
    122. print "> COMMAND SYNTAX COMMENT\n";
    123. print "> dir - dir - List Availible Ini Files for this Network tool\n";
    124. print "> help - help - View this Help Informations\n";
    125. print "> change - change[ini file] - Change current Network Settings\n";
    126. print "> exit - exit - Close this Programm\n";
    127. print "OK\n";
    128. }
    129. #($NAME,$HOME,$DNS,$SUB,$GATE) = undef;
    130. chomp($input = <STDIN>);
    131. }
    Alles anzeigen


    Und hier die Ini Files die benötigt werden um die Netzwerkeinstellungen zu ändern...

    Quellcode

    1. ::NETWORK::Netzwerk: Home
    2. NAME=LAN-Verbindung
    3. HOME=192.168.0.32
    4. DNS=192.168.0.222
    5. SUB=255.255.255.0
    6. GATE=192.168.0.222


    Erklärung der Ini Datei: Die erste Zeile ist eine Erkennungszeile. "::NETWORK::xxx" xxx kann durch alles Ersetzt werden. Es ist ein Kommentar der bei Listen der Dateien angezeigt wird. 0 = Kein Comment.


    Der Konsolen Output:

    Quellcode

    1. C:\>index.pl
    2. help
    3. > COMMAND SYNTAX COMMENT
    4. > dir - dir - List Availible Ini Files for this Network tool
    5. > help - help - View this Help Informations
    6. > change - change[ini file] - Change current Network Settings
    7. > exit - exit - Close this Programm
    8. OK
    9. dir
    10. > home.ini - Netzwerk: Home
    11. > willi.ini - Netzwerk: Willi(Nachbarn)
    12. OK, 2 Configuration Files found...
    13. change home.ini
    14. > Setting Ip Adress on "LAN-Verbindung" :OK
    15. > Delete DNS on "LAN-Verbindung" :OK
    16. > Add DNS on "LAN-Verbindung" :OK
    17. OK, Network Settings Changed...3/3 Steps OK
    18. exit
    19. C:\>
    Alles anzeigen




    Bitte um jede Antwort / Meinung / Vorschlag...

    LG,Real-TTX
  • Eigentlich dachte ich an einen Vorschlag (Verbesserung). Darum auch Präfix: "Bitte bewerten" Was du daraufschreiben sollst? Garnichts, sondern du kannst. Wie gesagt ein Verbesserungsvorschlag. Da ich weiß, das viele Sachen nicht richtig gelöst sind. Unter anderem der Aufruf mit qx bzw backquotes...
    Ob ich Perl kann, oder nicht. Ist mir eigentlich egal. Ich will Perl nicht können! Ich will ein Programm, dass mir meine Netzwerkeinstellungen ändern kann...

    Und genau dazu bitte ich um die oben genannten Antworten..... Dein "Ganz zoll?" Pack ich wohl in die Abteilung "Meinung". Da du aber ein Fragezeichen dahinter gesetzt hast und eigentlich dir nicht schlüssig bist. Denke ich eher, es fällt unter keinen der oben genannten Bereichen. Daher ist es OT. Oder etwa nicht?

    LG,Real-TTX
  • ausser vieleicht die 3 "Error..." in
    "Error IP adress could not be set to ...."
    "Error DNS could not be cleared"
    "Error DNS could not be set to ...."
    zu ändern (nur damit man weiß woran es hängt wenn es hängt) fällt mir jetzt nichts ein was das ganze verbessern könnte.

    Im zweifelsfall immer alle vorkommen von "print" durch "cowsay" ersetzen ^^
    Signatur entsprach nicht den Boardregeln.
    ->gelöscht by lukas2004
  • Hallo "n0n4m3",

    Naja, der Fehler Ouput ist auch nicht wirklich Informativ. Naja, ich benutze das Programm nun richtig Aktiv, da ich keine Möglichkeit 2 Verbindungen auf einmal nutzen zu können. Habe aber daraus ein TCP Server gemacht... Und einfache Batchscripte die Telnet benutzt um zu komunizieren... :)

    Aber Danke für die Informationen..

    LG,Real-TTX