NTFYを介して外部接続を許可するコンピュータにSSH経由で正常に接続されたら、通知を受けたいと思います。私はこのコンピュータをローカル(192.168.1.0/24)に頻繁にログインするため、その範囲内で接続すると通知を受けたくありません。
ここにリストされた例に従います。 https://docs.ntfy.sh/examples/#ssh-login-alerts
通知は正常に機能しますが、192.168.* を除外するようにスクリプトを変更しようとしています。私のbashは不都合で、数時間この問題で苦労しています。
ntfy-ssh-login.shを次のように修正しました。
#!/bin/bash
if [ "${PAM_TYPE}" = "open_session" ]; then
if [ "${PAM_RHOST}" != 192.168.* ]; then
curl \
-H prio:high \
-H tags:warning \
-d "SSH login: ${PAM_USER} from ${PAM_RHOST}" \
http://192.168.1.137:8777/alerts
fi
fi
PAM_RHOSTが192.168で始まると、NTFYに警告が送信されるとは予想されません。ただし、常に警告を送信します。 PAM_RHOST値が警告に含まれているため、この値で始まることがわかります。
30/08/2023, 22:12 Priority 4
⚠️ SSH login: --redacted-- from 192.168.1.11
192.168.1.11はで設定されます${PAM_RHOST}
。
私が何か愚かなことをしているのは間違いありません。
答え1
私の意見をある種の答えに変えてください。
テストは文字をワイルドカード/パターンとして[
扱わないため、一致せず、式は常に評価されます。*
${PAM_RHOST}
then
を使用しているので、/bin/bash
テストを使用してパターンで比較を処理できます[[
。*
if [[ "${PAM_RHOST}" != 192.168.* ]];