誰かがシステムにログインしようとして失敗するたびに、ウェブカメラから写真を撮って保存したいと思います。私はそれが次のことでできることを知っています:
mplayer -vo png -frames 1 tv://
問題は、誰かがLightDMを使用してログインに失敗したときに、このコマンドをトリガーするにはどうすればよいですか?
1つの方法は、承認ログを使用することです。
承認ログ
承認ログは、承認システム、Pluggable Authentication Module(PAM)システム、Sudoコマンド、sshdへのリモートログインなどのユーザーパスワードを要求するユーザーを承認するメカニズムの使用状況を追跡します。認証ログファイルには、
/var/log/auth.log
でアクセスできます。このログは、ユーザーのログインとSudoコマンドの使用法について学習するのに役立ちます。
ログインに失敗すると、レコードが/var/log/auth.log
ファイルに追加され、最後の行に次のようなものが含まれます。
pam_unix(gdm-password:auth): authentication failure;
ファイルの変更を常に監視し、最後の行にキーワードfailureがgrep failure
などで含まれているかどうかを確認すると、失敗したログイン試行が発生したことがわかりますこのアクションに基づいて、必要なコマンドを実行できます。
次のようなスクリプトを使用して、/var/log/auth.log
ファイルの最終行を監視できます。
#!/bin/bash
while true
do
sleep 1
if (( $(tail -1 /var/log/auth.log | grep failure | wc -l) == 1))
then
echo "failed login"
# Your command here
fi
done
あるいは、inotify-tools
をインストールし、sleep 1
の代わりにinotifywait
を使用してファイルを監視すると、スクリプトは次のようになります。
#!/bin/bash
while inotifywait -q -e modify /var/log/auth.log >/dev/null
do
if (( $(tail -1 /var/log/auth.log | grep failure | wc -l) == 1))
then
echo "failed login"
# Your command here
fi
done
inotify-tools
は、次のコマンドでインストールできます。
Sudo apt install inotify-tools
このソリューションをシステムサービスとして実行するには、次の手順に従ってください。
上記のスクリプトコードをコピーして(echo "failed login"
なしでデバッグ目的でこの行を追加したため)ホームディレクトリのファイルに貼り付け、TakePicture.sh
という名前を付けてファイルを保存します。
ターミナルで次のコマンドを実行して、シェルスクリプトファイルを実行可能にします。
chmod +x ~/TakePicture.sh
Sudo nano /etc/systemd/system/TakePicture.service
USERNAME
をyour usernameに置き換えて、を押して保存します Ctrl + X 次に押します Y 次に押します Enter :[Unit]
Description=Take Picture
[Service]
Type=oneshot
ExecStart=/home/USERNAME/TakePicture.sh
[Install]
WantedBy=multi-user.target
Sudo systemctl start TakePicture
Sudo systemctl enable TakePicture
お知らせ:
承認ログには、あらゆる種類の失敗したログインまたは認証(つまり、GDM、SSH、端末ユーザー認証、Sudoなど)が含まれます。
実際の物理的なログインが発生したときにスクリプトをアクティブにすることだけが目的の場合(つまり、誰かがコンピューターの前に座って、キーボードを使用して画面を見ている場合)、上記のifステートメントを次のように変更する必要があります。
if (( $(tail -1 /var/log/auth.log | grep gdm | grep failure | wc -l) == 1))
if[〜#〜] gdm [〜#〜]がログインマネージャーです。この方法では、実際に物理的なログインに失敗した場合にのみスクリプトがトリガーされます。
幸運を祈ります