tac LCSoap_8.log | sed -n '
/Server returned HTTP response code: 500 for URL:/,/qualified-src-dn=.*src-dn/!d
s/.*qualified-src-dn=\(.*\)src-dn.*/\1/p'
или повторно использовать ваш grep
:
tac LCSoap_8.log | sed '
/Server returned HTTP response code: 500 for URL:/,/qualified-src-dn=.*src-dn/!d' |
grep -Po '(?<=qualified-src-dn=).*(?=src-dn)'
sed '/A/,B/!d'
d̲eletes каждую строку за исключением (!̲) строк с A̲
до следующего B̲
после этого.
Вот некоторые мысли:
1) Вероятно, вам нужно использовать модуль pam_script или что-то подобное для создания homedir пользователей. Модуль pam_mkhomedir основывает домашний каталог на том, что видно в файле passwd (или ldap и т.д.) и предполагает несколько отображений uid/gid/homedir. Ваши пользователи виртуальны в mysql и не основываются на записи passwd, которую система знает и может хорошо играть в мире vsftp.
Скорее всего, модуль pam_script не включен в ваш дистрибутив, и вам может понадобиться найти внешний пакет или скомпилировать его из исходников.
2) $PAM_USER - это переменная окружения, которая передаётся модулям pam: С помощью pam_script, как мне передать PAM_AUTHTOK и PAM_USER во всех случаях?
3) Когда вы попадаете в скриптовую часть, проверьте наличие ошибок selinux, так как /etc/pam-script/pam_script_auth может быть отшлепано написанием в нестандартное место для вашего дистрибутива.
4) Отправьте ваш вывод в /etc/pam-script/pam_script_auth в лог-файл, чтобы вы могли увидеть, получаете ли вы ошибки, связанные с вашими командами.
$ cat /etc/pam-script/pam_script_auth
#!/bin/sh
echo "I got here" >> /tmp/script.out 2>&1
if [ ! -d "/opt/ftp/$PAM_USER" ]; then
/usr/bin/env mkdir /opt/ftp/$PAM_USER >> /tmp/script.out 2>&1
/usr/bin/env chown ftp:ftp /opt/ftp/$PAM_USER >> /tmp/script.out 2>&1
fi
Good luck,
Nick
Так что это ваш скрипт:
#!/bin/sh
if [ ! -d "/opt/ftp/$PAM_USER" ]; then
/usr/bin/env mkdir /opt/ftp/$PAM_USER
/usr/bin/env chown ftp:ftp /opt/ftp/$PAM_USER
fi
Попробуйте свой скрипт с этим:
#!/bin/sh
if [ ! -d "/opt/ftp/${PAM_USER}" ]; then
/usr/bin/env mkdir /opt/ftp/${PAM_USER}
/usr/bin/env chown ftp:ftp /opt/ftp/${PAM_USER}
fi
PAM_USER - это вариабельная версия? Но я не понимаю, где вы создаете эту переменную.
У меня есть подобный скрипт, он проверяет мое имя хоста, чтобы принять файл на сервере TFTP.