Я предполагаю, что "две новых строки" означают \n\n
а не две пустых строки после строки с [FACT]
(который был бы тремя новыми строками). Так или иначе sed будет работать, поскольку он разделяет только первую новую строку после [FACT]
.
$ echo -e '[FACT]\n\nend'
[FACT]
end
Это будет искать строки, заканчивающиеся в [FACT]
и для каждой строки, которая соответствует, мы используем N
добавлять следующую строку в текущее пространство шаблона, сохраняющее новую строку, которую sed обычно разделяет из пространства шаблона.
$ echo -e '[FACT]\n\nend' |sed '/\[FACT\]$/ { N; s/\n// }'
[FACT]
end
Если [FACT]
не должен конкретно быть в конце строки, удалить $
от команды.
Обратите внимание на то, что это технически разделяет новую строку от конца строки, которая содержит [FACT]
таким образом, это технически связывает две строки в одну:
$ echo -e '[FACT]\nhelp\nend'
[FACT]
help
end
$ echo -e '[FACT]\nhelp\nend' |sed '/\[FACT\]$/ { N; s/\n// }'
[FACT]help
end
Если вы не против использования пользовательского сценария, попробуйте это как PAM_EXEC
Сценарий:
#! /bin/bash
LAST_DATE=$(date -d "$(chage -l $PAM_USER | awk -F: '/Last password/{print $2}')" '+%s')
TODAY=$(date '+%s')
MAX_AGE=60
if (( (($TODAY - $LAST_DATE) / 86400) > $MAX_AGE ))
then
echo "Please change your password!"
fi
Спаси его где-то (скажем, /usr/local/bin/pass-warn.sh
), и добавьте строку на /etc/pam.d/sshd
:
session optional pam_exec.so stdout /usr/local/bin/pass-warn.sh
Если вы устанавливаете пароль старения вообще, то PAM_UNIX.SO
собирается запретить их аутентификацию после истечения срока действия пароля. Чтобы сделать то, что вы хотите, вы, вероятно, можете добавить что-то в свои сценарии входа. Например, я могу добавить следующее в /etc/profile.d
:
#!/bin/bash
maxDays=30
dayLastChanged=$(passwd -S $(whoami) | awk '{print $3}')
currentTimestamp=$(date "+%s")
lastChangeTimestamp=$(date -d $dayLastChanged "+%s")
timestampDifference=$(( $currentTimestamp - $lastChangeTimestamp ))
maxSeconds=$(( $maxDays * 86400 ))
if [[ $timestampDifference -gt $maxSeconds ]]; then
echo "Yo, you need to change your password bud. Otherwise the guys with white-on-white ties are coming for you."
fi