지금까지:
#!/bin/bash
tail -fn0 /var/log/dirsrv/redacted-domain/audit | \
while read line ; do
echo "$line" | grep -C 5 -i "add: member"
if [ $? = 0 ]
then
mail -s "New User Added" [email protected] > /dev/null
fi
echo "$line" | grep -C 5 -i "add: nsaccountlock"
if [ $? = 0 ]
then
mail -s "Account Disabled" [email protected] > /dev/null
fi
done
/var/log/dirsrv/redacted-domain/audit
파일에서 grep 일치 콘텐츠를 가져와 이메일에 넣고 싶습니다 [email protected]
. 위의 루프를 사용하여 grep 문을 이메일 자체에 넣는 것은 중복된 것처럼 느껴집니다(어쨌든 작동하지 않습니다).
죄송합니다. greping의 예를 포함했어야 했습니다.
time: 20200114133315 dn: cn=users,cn=groups,cn=accounts,dc=ipa,dc=domain,dc=com result: 0 changetype: modify add: member member: uid=example_user,cn=users,cn=accounts,dc=ipa,dc=domain,dc=com
add: member
유형 일치를 찾고 전체 ^를 이메일로 반환하고 싶습니다 .
답변1
두 가지 옵션이 있습니다.
하나는 지금처럼 이메일을 보내는 것입니다(https://stackoverflow.com/questions/5155923/sending-a-mail-from-a-linux-shell-script)
cat /path/to/file | mail -s "your subject" [email protected]
나는 당신이 이것을 주기적으로 수행하고 일부 crontab 스크립트에서 이 이메일을 보내는 것을 상상합니다. 이 경우 crontab 상단에 를 입력하세요 [email protected]
.
[email protected]
0 * * * * /path/to/your/script
이 경우 서버는 이메일을 보내고 내용은 스크립트가 표준 출력으로 출력하는 내용이 됩니다. 스크립트가 아무것도 인쇄하지 않으면 이메일이 전송되지 않습니다. 이렇게 하면 mail
이메일을 보내기 위해 스크립트에서 프로그램을 처리할 필요가 없습니다 . grep에게 일치하는 줄을 인쇄하도록 요청하면 이메일로 전송됩니다. 문제는 테마를 그렇게 변경할 수는 없지만 콘텐츠에 줄을 추가하는 것도 효과가 있을 것 같아요.