Мне нужно установить disable=no
в /etc/xinetd.d/chargen
с помощью таких команд, как perl или sed.
/etc/xinetd.d/chargen
содержимое:
# description: An xinetd internal service which generate characters. The
# xinetd internal service which continuously generates characters until the
# connection is dropped. The characters look something like this:
# !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg
# This is the tcp version.
service chargen
{
disable = yes
type = INTERNAL
id = chargen-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service chargen
{
disable = yes
type = INTERNAL
id = chargen-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
}
Я использовал команду perl
perl -0777 -pe 's|(service chargen[^\^]+)disable\s+=\syes|\1disable=no|' /etc/xinetd.d/chargen
но он заменяет только одно место.
# description: An xinetd internal service which generate characters. The
# xinetd internal service which continuously generates characters until the
# connection is dropped. The characters look something like this:
# !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg
# This is the tcp version.
service chargen
{
disable = yes
type = INTERNAL
id = chargen-stream
socket_type = stream
protocol = tcp
user = root
wait = no
}
# This is the udp version.
service chargen
{
disable=no
type = INTERNAL
id = chargen-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
}
Какая команда должна заставить его работать в обоих местах?
ПРИМЕЧАНИЕ : я мог бы заменить disable = yes
на disable = no
без сопоставления service chargen
, но мне нужно использовать ту же команду sed / perl для замены в /etc/xinetd.conf
, которая будет иметь другиеуслуги тоже.
ОБНОВЛЕНИЕ Как отметил Джонатан в своем комментарии, отключение может быть в любом месте внутри цветочной скобки.