我想通过sendmail合并三个logwatch输出和管道结果的输出。
示例:
#!/bin/sh
LOG_DIR="/var/log/remote-hosts"
MAIL_TO="me@email.com"
sh -c "logwatch && find ${LOG_DIR} -type d -name \"ip*\" -print0 | xargs -0 -I{} sh -c 'logwatch --logdir {} --hostname $(basename {})'" |
sed '1!b;s/^/To: '${MAIL_TO}'\nSubject: Logwatch report\n\n/' | sendmail -t
在/ var / log文件夹上执行第一个logwatch 然后我想用find遍历/ var / log / remote-hosts子文件夹(ip-10-0-0-38和ip-10-0-0-39),并对它们进行logwatch。
合并的输出将通过sentmail发送。但是我想用/ var / log / remote-hosts子文件夹的基本名称替换主机名,而不是/ var / log / remote-hosts / ip-10-0-0-38我会有ip-10-0-0仅限-38。
但不幸的是,我不知道如何正确地执行basename部分。有帮助吗?提前谢谢。
答案 0 :(得分:1)
请勿使用sh -c
分组语句,请使用(...)
:
(logwatch && find ${LOG_DIR} -type d -name "ip*" -print0 | xargs -0 -I{} sh -c 'logwatch --logdir {} --hostname $(basename {})') |
sed '1!b;s/^/To: '${MAIL_TO}'\nSubject: Logwatch report\n\n/' | sendmail -t