Почему Ubuntu разрешает имя `_gateway` в шлюз по умолчанию вместо `gateway`?

perl -F'\h+|[-.:]' -lane '
   $h[keys %h]=$F[0] unless $h{$F[0]};
   $h{$F[0]}[$_-1] += $F[$_] for 1..$#F}{for ( @h )
   {
      my @Arefs = map { \$_ } my($days, $hrs, $mins, $secs, $msec) = @{$h{$_}};
      while ( $msec >= 1000 ) { $secs++; $msec -= 1000; }
      while ( $secs >=   60 ) { $mins++; $secs -=   60; }
      while ( $mins >=   60 ) { $hrs++;  $mins -=   60; }
      while ( $hrs  >=   24 ) { $days++; $hrs  -=   24; }
      print $_, sprintf " %d-%02d:%02d:%02d.%03d", map $$_, @Arefs;
   }
' text.file

perl -F'\h+|[-.:]' -lane '
   $h[keys %h]=$F[0] unless $h{$F[0]};
   $h{$F[0]}[$_-1] += $F[$_] for 1..$#F}{for ( @h )
   {
      use integer;
      my @A = @{$h{$_}};
      $A[0] += ($A[1] += ($A[2] += ($A[3] += $A[4]/1000)/60)/60)/24;
      $A[4] %= 1000; $A[3] %= 60;$A[2] %= 60; $A[1] %= 24;
      print $_, sprintf " %d-%02d:%02d:%02d.%03d", @A;
   }
' text_file

Результаты

aaa 1-21:27:26.255
bbb 5-11:15:04.433

Пояснение

  • Разделитель полей устанавливается для разделения миллисекунд, секунд, минут, часов, дней и первого ключа поля.
  • Входная строка разбивается и сохраняется в массиве @Fс элементами :$F[0] -> клавиша (aaa/bbb/и т. д. )$F[1] -> дни, $F[2] -> часы, $F[3] -> минуты, $F[4] -> секунды, $F[5] -> миллисекунд.
  • Хэш-ключи по самой своей природе доступны не в том порядке, в котором они были созданы, поэтому у нас есть массив @h, элементы которого являются хэш-ключами %hв том порядке, в котором они были просмотрены.
  • Хэш %hсоставляется следующим образом:

%h = (
    aaa => [ days, hours, minutes, seconds, milliseconds ],
    bbb => [                   ...                      ],
   ... 
 );
4
14.10.2019, 18:07
1 ответ

Взято из systemd System and Service Manager , «ИЗМЕНЕНИЯ С 235»:

nss-myhostname/systemd-resolved will now by default synthesize an A/AAAA resource record for the "_gateway" hostname, pointing to the current default IP gateway. Previously it did that for the "gateway" name, hampering adoption, as some distributions wanted to leave that host name open for local use. The old behaviour may still be requested at build time.

Как видите, некоторые дистрибутивы возражали против использования gatewayв качестве автоматического псевдонима, поэтому он был изменен на _gateway.

См. также документацию systemd-resolved, «Синтетические записи».

10
27.01.2020, 20:50

Теги

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