поместите данные в столбцы

Выход из netstat -r не содержит маршрута по умолчанию.

Это должно поступать по протоколу DHCP от программного обеспечения хоста ВМ.

Правка:

Вы можете попробовать выяснить, настроен ли маршрут по умолчанию, используя rtmon и ip из пакета iproute. С помощью rtmon вы можете посмотреть интерфейс netlink ядра, а с помощью ip вы можете посмотреть эти журналы.

Выключите интерфейс с помощью ifdown eth0 и запустите rtmon следующим образом:

rtmon file /var/log/rtmon.log

Затем активируйте сетевой интерфейс с помощью ifup eth0. После того, как вы получили IP-адрес, посмотрите в журнале с помощью

ip monitor file /var/log/rtmon.log | less

Ищите что-нибудь вроде

default via 172.31.2.x dev eth0

Если вы найдете это, то, вероятно, вы получили маршрут по умолчанию от DHCP, и проблема где-то на вашей ВМ. Если вы не найдете его, вероятно, это проблема с DHCP.

1
23.04.2015, 18:33
2 ответа

Раствор Perl, с использованием текста Text :: Text для приятного форматирования вывода:

#!/usr/bin/perl
use warnings;
use strict;

use Text::Table;

my %t;
my ($router, $ip, $column);
while (<>) {
    if (/==>/) {
        ($router, $ip, $column) = /(.*) ==> ([0-9.]+) (\S+)/;
    } else {
        chomp;
        push @{ $t{$router}{$ip}{$column} }, $_;
    }
}

my @columns = qw( If_Name If_index If_status );
my $tt = 'Text::Table'->new('routerName', 'IPadd', @columns);
for my $router (keys %t) {
    for my $ip (keys %{ $t{$router} }) {
        for my $i (0 .. $#{ $t{$router}{$ip}{ $columns[0] } }) {
            my @values = map $t{$router}{$ip}{$_}[$i], @columns;
            $tt->add($router, $ip, @values);
        }
    }
}

print $tt;
1
27.01.2020, 23:50

Ну, вы могли бы сделать это в паре шагов по крайней мере. Если вы сделали

mkdir <archive name>
tar -xf <archive name>.tar.gz --strip-components=1 -C <archive name>

, это будет выполнить задачу, хотя там еще может быть более компактный ответ.

-121--24881-

Раствор AWK

awk '
/Routeur/{
    i=0;
    host[$1" "$2]=$4;
    k++;
    param[k]=$5;
    next }
{
    i++
    Data[k,i]=$0
}
END{ 
    printf("%-12s%-15s","routerName","IPadd");
    for(j in param)
        printf("%-17s",param[j]);
    print "\n";
    for(h in host)
        for(i=1;i<3;i++){
            printf("%-12s%-15s",h,host[h]);
            for(j in param)
                printf "%-17s", Data[j,i];
            print""     }
   }'

Для разных хостов должен быть изменен в соответствии с количеством полей.

0
27.01.2020, 23:50

Теги

Похожие вопросы