何か良いお知恵を拝借できればと存じます。実際に稼働出来た回答に、全ポイントをお支払いします。回答の早さでは無く正確性を重視させて頂きます。
社員が退職した日の翌0時に自動的に転送処理を無効にし、担当者に処理完了メールを送りたいと考えています。退職予定の事実と退職予定日はあらかじめ分かっています。
時間になったらvirtualに記載されている特定アカウントの行を見つけ出し、その行をコメントアウトするシェルスクリプトを組んでおきcronで予定日に実行するという方法を考えたのですが、他に良い方法があればこだわりません。最後の段にvirtualの例を記載してあります。bar_usersさんが退職される場合、3行目のみコメントアウトしたいです。1行目にもbar_usersさんが転送先として指定されていますが、この行はヒットさせたくありません。
OSバージョン:CentOS Linux release 7.2.1511 (Core)
使用シェル:/bin/bash
使用SMTPサービス:Redirecting to /bin/systemctl status postfix.service
/etc/postfix/virtual
alluser@hoge.com foo_users@hoge.com, bar_users@hoge.com
#foo_users@hoge.com foo_users@domino.hoge.com
bar_users@hoge.com bar_users@domino.hoge.com
質問で書かれている範囲をシェルスクリプトにしてみました。
#! /bin/sh ID=bar_users TARGET=/etc/postfix/virtual cat $TARGET | awk ' $1 ~ /^'$ID'@/ { print "#" $0 continue } { print $0 } ' > $TARGET.new mv $TARGET $TARGET.bak mv $TARGET.new $TARGET
先頭の方に書いてある、変数 ID に定義された利用者を、変数 TARGET に定義されたファイルから探して、該当行をコメントアウトします。
コメントアウトする対象かどうかは、空白またはタブで区切られたひとつ目を対象にして、ID の内容で始まって、それに続いて @ が記載されているかどうかで判定しています。
一回分だけ、ファイルの末尾を .bak にしたファイルで元のファイルを残すようにしています。
質問で書かれている範囲をシェルスクリプトにしてみました。
#! /bin/sh ID=bar_users TARGET=/etc/postfix/virtual cat $TARGET | awk ' $1 ~ /^'$ID'@/ { print "#" $0 continue } { print $0 } ' > $TARGET.new mv $TARGET $TARGET.bak mv $TARGET.new $TARGET
先頭の方に書いてある、変数 ID に定義された利用者を、変数 TARGET に定義されたファイルから探して、該当行をコメントアウトします。
コメントアウトする対象かどうかは、空白またはタブで区切られたひとつ目を対象にして、ID の内容で始まって、それに続いて @ が記載されているかどうかで判定しています。
一回分だけ、ファイルの末尾を .bak にしたファイルで元のファイルを残すようにしています。
ありがとうございます。
自動でシェルを走らせることと、担当者にメール通知するという部分についても実装いただけるでしょうか。
お恥ずかしい話ですがその部分についてもわからないのです。ポイントが足らないようなら、追加で簡単な質問をしてそちらで追加ポイントのお支払いも可能です。
ありがとうございます。
2018/12/17 18:02:12自動でシェルを走らせることと、担当者にメール通知するという部分についても実装いただけるでしょうか。
お恥ずかしい話ですがその部分についてもわからないのです。ポイントが足らないようなら、追加で簡単な質問をしてそちらで追加ポイントのお支払いも可能です。