登录后自动运行Bash脚本

时间:2012-03-12 20:18:31

标签: bash unix centos

我编写了一个脚本,用于发送登录日志文件的人员的日期和用户名,以记录谁已登录。我想知道如何设置此脚本在用户登录时自动执行而不是必须在终端中手动运行它。注意:USERNAME是登录的当前用户。

我的代码:

#!/bin/bash

printf "$(date) $HOSTNAME booted!\n" >> /home/USERNAME/boot.log

3 个答案:

答案 0 :(得分:4)

解决此问题的一种更优雅的方法是从已经写入且无法由用户更改的日志文件中读取。没有人能比Bjørne Malmanger's in his answer更好地说出来:

  

我不相信用户给你的信息。作为根本你   采取它; - )

执行此操作的一个好方法是last命令,这很棒,因为它可以整齐地显示所有登录:图形,控制台和SSH。

last

不太优雅但仍然安全的方法是在/var/log/auth.log上执行grep。在我的Gnome / Ubuntu系统上,我可以使用它来跟踪图形登录:

grep "session opened for user USERNAME"

需要为每种登录类型找到适合您机器的模式:图形,控制台和SSH。这很麻烦,但如果您需要比last更远的信息,则可能需要这样做。

直接回答你的问题:

您可以像这样修改脚本以获取用户名

#!bin/bash
printf "$(date) $HOSTNAME booted!\n" >> /home/$(whoami)/boot.log

并将此行添加到/ etc / profile

. /path/to/script.sh

这不安全,因为用户可以编辑自己的日志

答案 1 :(得分:3)

将它放在〜/ .bash_profile中。它将在每次登录时运行。

the women's rights page (i.e. man bash)提供了更多信息。

答案 2 :(得分:3)

为什么不使用last命令?

我不相信用户给你的信息。作为根本你采取它; - )