Катенация двух команд в файл и вывод по электронной почте

Опция - disabled-password не устанавливает пароль, это означает, что пароль не легален, но вход в систему все равно возможен (например, с помощью SSH RSA ключей).

Для создания пользователя без пароля используйте -d passwd -d $username после создания пользователя, чтобы сделать пароль пустым. Обратите внимание, что не все системы позволяют пользователям с пустым паролем входить в систему.

1
26.11.2018, 01:06
1 ответ

Если вы хотите отправить вывод нескольких разных команд вместе в одном сообщении, не заморачивайтесь с временными файлами, сгруппируйте команды и просто используйте pipe:

(
 date
 echo
 for host in $HOSTS; do
     echo "${host/*-} instance"
     perl -e 'print "=" x 65,"\n"
     lsuser -a login ALL | awk '/=true$/ { print $1 }' | grep -wvf /home/angela/unwanteduser.list
     echo
 done
) | mailx -r From-account-server-no-reply@xyz.com -s "List of active Users and Locked users" angela@xyz.com

The ( . . ) запускает команду между скобками в отдельном подпроцессе, так что весь его стандартный вывод может быть собран в трубопровод.

Фильтрация может быть выполнена в момент генерации данных, а не в конце.

Если вы все равно используете awk, то часть конвейера grep можно исключить, поскольку awk вполне способен сам выбирать строки для обработки. Это требует на один процесс меньше, что более эффективно.

Я также избавился от временной переменной "title", используя подстановку паттернов, чтобы избавиться от IP-адреса (заменяет *- ничем).

Я бы прописал 65 символов =, поскольку вызов perl для этого приводит к довольно значительным накладным расходам. Вы не заметите многого, выполняя только этот сценарий, но если вы возьмете за привычку и когда-нибудь напишете такой сценарий, который будет выполняться несколько раз в секунду, то вы заметите разницу.

0
28.01.2020, 01:33

Теги

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