如何在每次登录和解锁会话时运行脚本

如何在每次登录和解锁会话时运行脚本

在 Saucy salamander 中,每次登录时,以及每次在手动锁定或自动睡眠后解锁会话时,我都需要运行一个脚本。我无法为此使用“启动应用程序”,因为它不会在解锁时触发。

答案1

成立,由Ubuntu 论坛用户 opus1。也许能有所帮助。


该帖子给出的解决方案如下:

感兴趣的朋友可以看看我的做法:我查看了日志(特别是 /var/logs/auth.log),发现每次检查并接受密码时都会生成一个条目。我的日志显示:

Aug  7 14:10:57 mumble gnome-screensaver-dialog: gkr-pam: unlocked login keyring

最终,我找到了一款名为“Swatch”的应用程序,它可以为您监控日志,并在您指定的字符串出现在该日志中时运行脚本。Swatch 需要一个配置文件 (.swatchrc),我的配置文件如下所示:

watchfor /unlocked login keyring/
  exec /root/.gnome2/nautilus-scripts/wakeServer

其中“/unlocked login keyring/”是要查找的字符串,“exec”定义找到后要运行的脚本。我的 wakeServer 脚本如下所示:

#!/bin/bash

#wake the server
wakeonlan AA:BB:CC:DD:EE:FF

#record info in the log file
myVar="woke server at login:"
echo "$myVar">>/home/me/.serverWake.log
date>>/home/me/.serverWake.log

其中“AA:BB:CC:DD:EE:FF”是我的服务器的 MAC 地址。

Swatch 需要作为启动应用程序输入(在系统 | 首选项 | 启动应用程序中创建一个名为“runSwatch”的条目,并执行命令“swatch --tail-file /var/log/auth.log --daemon”。 (在 Debian 中,只有 root 可以读取日志,因此启动命令需要以“sudo”开头,并且需要在没有密码的情况下将 swatch 添加到 sudoers 文件中。在 Ubuntu 中,非 root 用户似乎也可以读取日志。授予对 swatch 的无密码访问权限可能存在安全问题,但在我看来这是可以接受的)。

到目前为止它运行完美!

答案2

.bashrc将是您想要用于该过程的地方。 .bashrc保存用户的个人资料和所有配置,这就是您登录时系统将首先读取的内容,因此这就是您想要放置登录后运行的自定义脚本的代码的地方。

以下是我使用的代码示例。这是我添加到 .bashrc 底行的代码:

if [ -f ~/.myscripts ]; then
. ~/.myscripts
fi

并将.myscripts我的脚本保存在 bash shell 中,以便在我登录时触发。

相关内容