netstat und sed

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von Fiete, 05.01.2009.

  1. Fiete

    Fiete Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo zusammen und ein gesundes neues Jahr....

    I need :hilfe2: !!!

    Ich habe vor in einem Perl Skript den Befehl netstat -t auf einem Router auszuführen auf dem Openwrt läuft.
    Auf den Router via Telnet im Skript zu kommen und dort Befehle auszuführen ist nicht das Problem... Mein Problem ist nur dann wenn ich netstat -t ausführe kommt:

    root@ROUTER_4:/# netstat -t
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 172.21.1.153:23 172.21.1.100:56782 ESTABLISHED
    netstat: no kernel support for AF INET6 (tcp)

    Wichtig ist mir nur die IP Adresse des Client's ! Sprich 172.21.1.100 diese soll in eine Variable Geschrieben werden. Es sollte eigendlich mit sed funktionieren, jedoch bin ich damit unerfahren und habe keine Ahnung wie das geht... Ich hoffe hier gibt es Hilfe..

    Danke im Vorraus...

    lg
    Fiete
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. yai

    yai yet another idiot

    Dabei seit:
    22.01.2007
    Beiträge:
    166
    Zustimmungen:
    0
    netstat -t | awk '/^tcp/ {print $5}'
    wäre 'ne Variante, musste dann halt in eine Varibale (bzw. ein Array) packen.
    bei längeren Listen würde ich perl nehmen.
     
  4. Fiete

    Fiete Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Ok danke erstmal.. funzt aber nur so halb, hier mal mein skript

    Code:
    #!/usr/bin/perl 
    
    use strict;
    use warnings;
    use Net::Telnet ();
    my $t;
    my @output;
    
    $t = new Net::Telnet 	(Timeout => 10,
                          	Prompt => '/root\@ROUTER/',
    			Errmode => 'die');
    
    $t->open("172.21.1.153");
    $t->waitfor('/root/'); 
    #$t->cmd(string => 'insmod nfs'); 
    @output = $t->cmd(string => 'netstat -t | awk \'/^tcp/ {print $5}\'');
    
    print @output;
    
    AUSGABE:
    Code:
    netstat: no kernel support for AF INET6 (tcp)
    172.21.1.100:53506
    172.21.1.100:35760
    
    ich will aber wie gesagt nur die IP ohne Port...
     
  5. #4 yai, 05.01.2009
    Zuletzt bearbeitet: 05.01.2009
    yai

    yai yet another idiot

    Dabei seit:
    22.01.2007
    Beiträge:
    166
    Zustimmungen:
    0
    Hi,
    im Perl systemcall Pipes und awk etc. zu verwenden ist alles andere als performant, besser du machst die Auswertung dann auch im Perl Skript, z.B.
    Code:
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Data::Dumper;
    
    my @output = `netstat -t`;
    my @ips;
    my $i = 0;
    for (@output) {
      if (/^tcp/) {
        my @fields = split(/[\s:]+/, $_);
        $ips[$i++] = $fields[5];
      }
    }
    print Dumper @ips;
    
    Es gibt übrigens auch ein Net::Netstat::Wrapper Modul auf CPAN, das hab ich aber noch nicht ausprobiert.
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    ach so: ob das $5 in Zeile 12 so stimmt musst du testen, die netstat Ausgabe ist auf Linux etwas anders als auf deinem Router.
     
  6. #5 Fiete, 05.01.2009
    Zuletzt bearbeitet: 05.01.2009
    Fiete

    Fiete Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Kuhl.. es läuft danke dir

    AUSGABE:

    $VAR1 = '172.21.1.100';
    $VAR2 = '172.21.1.100';

    und wie mache ich das jetzt, dass ich jetz nur VAR1 in eine Variable schreibe?
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    print $ips[1];
    ok habs... danke dir vielmals....
     
  7. #6 Wolfgang, 05.01.2009
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Kurzform für mal schnell auf der Shell:
    Code:
    netstat -t|perl -anle 'print ((split /:/,$F[4])[0]) if(/^tcp/)'
    
    Gibt dir nur die IP ohne Port aus.

    Wolfgang
     
  8. Fiete

    Fiete Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Danke auch dir Wolfgang, aber mein router supported zur Zeit noch kein perl
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 Bâshgob, 06.01.2009
    Bâshgob

    Bâshgob freies Radikal

    Dabei seit:
    29.07.2004
    Beiträge:
    2.334
    Zustimmungen:
    0
    Ort:
    Hannover
    Du postest doch oben selber ein Perlscript mit Ausgabe. Widerspruch ersichtlich?
     
  11. #9 Fiete, 06.01.2009
    Zuletzt bearbeitet: 06.01.2009
    Fiete

    Fiete Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    5
    Zustimmungen:
    0
    Hmmm nicht ganz das Skript führe ich ja net aufm Router aus, sondern auf irgend nem client.... das skript stellt ne telnetverbindung her und führt befehle aus....
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Ach hey Leute ich habe da noch ein Problem.... Ziel ist es zu übersprüfen ob in einem Array ein bestimmter Inhalt steht... (Ich weiß schon 1000mal durchgekaut), jedoch habe ich ja schon ein ansatz..

    Code:
    #!/usr/bin/perl
    
    use strict; 
    use warnings;
    use Net::Telnet ();
    my $t = new Net::Telnet 	(Timeout => 10,
                          		Prompt => '/root\@ROUTER/',
    				Errmode => 'die');
    
    $t->open("IP");
    $t->waitfor('/root/'); 
    
    my @output = $t->cmd(string => 'cat /etc/samba/smb.conf');
    
    my $test = "@output";
    
    print $test;
    
    Ausgabe ist dann

    Code:
    [global]
             netbios name = Router4 
             workgroup = workgroup
             server string = openwrt-router4
             syslog = 10
             encrypt passwords = true
             passdb backend = smbpasswd
             obey pam restrictions = yes
             socket options = TCP_NODELAY
             unix charset = ISO-8859-1
             preferred master = yes
             os level = 20
             security = user
             guest account = nobody
             invalid users = root
             smb passwd file = /etc/samba/smbpasswd
             username map = /etc/samba/smbusers
             map to guest = bad user
             
     [config]
             path = /tmp
             guest ok = yes
             writeable = yes
             browseable = yes
             create mode = 0664
             directory mode = 0775
     
     [homes]
             comment = Home Directories
             browseable = no
             read only = no
             create mode = 0750
     
     [tmp]
             path = /tmp
             guest ok = yes
             create mask = 0700
             directory mask = 0700
    
    und mein Ziel ist haltzu überprüfen ob der Block

    [config]
    path = /tmp
    guest ok = yes
    writeable = yes
    browseable = yes
    create mode = 0664
    directory mode = 0775

    vorhanden ist.

    Ich dachte da so irgendwie an

    if ($test =~ /.*[config]......)

    aber ich bin mir nicht sicher wie ich das machen soll ?

    sowas schon mal jmd gemacht?

    Thanks for help!

    lg Fiete
     
Thema:

netstat und sed

Die Seite wird geladen...

netstat und sed - Ähnliche Themen

  1. netstat massig verbindungen

    netstat massig verbindungen: Hallo, ich habe ein Problem ich habe einen Server mit Apache, Plone und einem dazugehörigen Shopsystem(Easyshop) am laufen. Der Shop läuft...
  2. Torrentflux B4rt + Netstat

    Torrentflux B4rt + Netstat: Hallo, habe Problem mit meiner Connectionanzeige, es steht dauerhaft 0 da. Habe schon dazu gegoogelt , aber nicht so richtig was gefunden....
  3. netstatkrempel...

    netstatkrempel...: die Frage klingt jetz vielleicht n' wenig noobig, aber ich hab keine Ahnung was bei "netstat" "in-Node" und die Protokolle mit namen "unix2",...
  4. Netstat zeigt statt IPs nur MAC-ähnliche Adressen

    Netstat zeigt statt IPs nur MAC-ähnliche Adressen: Hallo! Ich verwenden gern den Befehl "netstat -a -p tcp -n | grep -i 548" um mir im Terminal meine offenen AppleShare- Verbindungen anzeigen zu...
  5. Nagios, RRDTOOL & Netstat

    Nagios, RRDTOOL & Netstat: Hallo, suche Hilfe zu den oben genannten Programmne, besonders zu nagiostat und den Einträgen in der .conf Datei, wäre dringend. Weiß nicht...