Pulse Secureで、前日の接続一覧を作成しメールで飛ばすための簡単なスクリプトを作成しました。
下記のように出力されます。
Apr 13 taro.yamada[vpn-pol-2](10:40:25)
まず日付は見やすい硫黄に出力を整えます。
syslogから必要なフィールドだけを切り出したいのでawkを使います。
taro.yamadaの部分はActive Directoryユーザー名です。
元のsyslogには、ドメイン\taro.yamadaで出力されていますが、スクリプト中のsedコマンドで削除しています。
vpn-pol-2の部分はUser Rolesで作成しているロール名です。
私の環境では、Active Directoryのセキュリてkぃグループでロールを割り振っています。
上記の例では、AD側でVPN-Bというセキュリティグループを割り当てているユーザーのため、それに対応するPCS側のvpn-pol-2が割り当たってセッションが確立していることがわかります。
マッピングは下記の手順です。
User Realms > SystemDomain > Role Mapping
該当のルールで下記のようにしています。
group is "ドメイン/VPN-B" ⇒ vpn-pol-2
スクリプトは下記になります。
#!/bin/sh export LC_TIME=C LOGFILE=/var/log/network/psa-1.log LOGDATE=$(date +'%b %e') TMPFILE=$(tempfile) MESSAGE=$(tempfile) SENDMAIL=/usr/sbin/sendmail SENDER="送信者アドレス" SUBJECT="Pulse Secure Login History Today" RECIPIENT="受信者アドレス" grep "${LOGDATE}" ${LOGFILE} \ | grep "Session started for user with" \ | awk -v d="${LOGDATE}" '{print d, $12 "("$7")"}' \ | tr -d '<>' > ${TMPFILE} sed -e 's/(SystemDomain)//g' ${TMPFILE} > TMPFILEnew1 sed -e 's/Active Directoryドメイン名\\//g' TMPFILEnew1 > TMPFILEnew2 LINES=$(cat TMPFILEnew2 | wc -l) cat << EOT > ${MESSAGE} To: ${RECIPIENT} Subject: ${SUBJECT} Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Pulse Secure Login History Today Date:$LOGDATE Total: ${LINES} EOT cat TMPFILEnew2 >> ${MESSAGE} cat ${MESSAGE} | ${SENDMAIL} -t -f ${SENDER} -F ${SENDER} ${RECIPIENT} rm ${TMPFILE} TMPFILEnew1 TMPFILEnew2 ${MESSAGE}