Как заставить linux 'diff' работать с выражением регулярного выражения в bash

Как указал А.Б., ваша конфигурация ssh, вероятно, настроена для прослушивания определенного IP-адреса. Если этот IP-адрес недоступен при запуске sshd, служба не будет работать.
По умолчанию sshd настроен на перечисление 0.0.0.0, что означает любой адрес, и, таким образом, не зависит от наличия конкретного IP-адреса.

Есть два способа решить эту проблему:

Запуск послеnetwork-online.target

systemd предоставляет модуль network-online.targetдля сервисов, которым требуется полная работа сети (для всех настроенных интерфейсов ). Таким образом, вы можете запустить sshd после того, как этот модуль запустится после настройки интерфейса

.
mkdir /etc/systemd/system/sshd.service.d

cat > /etc/systemd/system/sshd.service.d/network-online.conf <<EOF
[Unit]
After=network-online.target
EOF

systemctl daemon-reload

Разрешить привязку к не -локальным адресам

Другой вариант — разрешить прослушивание адресов, отсутствующих на хосте.
Это решение является общесистемным, поэтому оно применимо к любой службе, а не только к sshd.

echo 'net.ipv4.ip_nonlocal_bind = 1' > /etc/sysctl.d/99-nonlocal_bind.conf

systemctl restart systemd-sysctl.service
2
27.10.2019, 03:34
1 ответ

Совпадение с началом ^и концом строки $, а также со строкой PID(, которую вы не хотите игнорировать FOO(12345)и BAR(12345)):

diff -I '^PID([0-9]\{5\})$' expected.out actual.out

Безопаснее сопоставить одну или несколько цифр, чем предполагать, что каждый PID состоит из 5 цифр:

diff -I '^PID([0-9]\+)$' expected.out actual.out
0
27.01.2020, 22:24

Теги

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