sed -e "$(awk '/^[[:space:]]*(#|$)/ { next } ;
{ print "s/ PROTO="$2" / PROTO="$3" /;" }' \
/etc/protocols)" /path/to/iptables.log
Здесь используется awk
для создания сценария sed
из полей 2 и 3 файла / etc / Протоколы
файл. Затем он запускает сценарий sed
в /path/to/iptables.log
. Это преобразует ВСЕ пронумерованных протоколов в файле журнала в их соответствующие имена.
При желании вы можете сохранить вывод сценария awk
в файл (например, с именем verbose-proto.sed
, а затем запустить его с помощью sed -f
(или даже отредактируйте его, добавив #! / Bin / sed -f
в качестве первой строки и chmod
, чтобы сделать его исполняемым). Например,
$ awk '/^[[:space:]]*(#|$)/ { next } ;
{ print "s/ PROTO="$2" / PROTO="$3" /;" }' \
/etc/protocols > ./verbose-proto.sed
$ printf "%s\n" 1 i '#!/bin/sed -f' . w | ed -s verbose-proto.sed
$ chmod +x ./verbose-proto.sed
$ ./verbose-proto.sed /path/to/iptables.log
Если все вы нужно изменить один номер протокола 2
на IGMP
, это намного проще:
sed -e 's/ PROTO=2 / PROTO=IGMP /' /path/to/iptables.log
(сценарий awk
генерирует около 50 строк с поиском по регулярному выражению и замените такие правила - по одному для каждого известного протокола в / etc /tocols
)
Есть опция конфигурации services.logind.extraConfig .
Откройте файл конфигурации NixOS ( /etc/nixos/configuration.nix
). Назначьте строку «HandleLidSwitch = ignore»
(или то, что вы обычно помещаете в /etc/systemd/logind.conf
) этой опции:
services.logind.extraConfig = "HandleLidSwitch=ignore";
Хотя решение, предложенное Миржаном, вероятно, сработает, существует гораздо более элегантный способ с использованием опцийservices.logind.lidSwitch
и services.logind.lidSwitchDocked
.
Теперь вы можете просто написать
services.logind.lidSwitch = "ignore";
Для этих параметров также предусмотрены типы, поэтому недопустимая конфигурация будет обнаружена во время сборки.