登录后自动运行 Bash 脚本

问题描述 投票:0回答:4

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

我的代码:

#!/bin/bash

printf "$(date) $HOSTNAME booted!\n" >> /home/USERNAME/boot.log
bash unix centos
4个回答
5
投票

解决此问题的更优雅的方法是从已写入且用户无法更改的日志文件中读取。没有人能比 Bjørne Malmanger 在他的回答中说得更好

我不相信用户会向您提供信息。作为root你 拿走它;-)

执行此操作的一个好方法是

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

但这并不安全,因为用户将能够编辑自己的日志


4
投票

为什么不使用

last
命令呢?

我不相信用户会向您提供信息。作为root,你接受它;-)


3
投票

将其放入~/.bash_profile中。每次登录时都会运行它。

更多信息请访问妇女权利页面(即

man bash


0
投票

已经有一个脚本会在你登录Linux时自动运行。这是位于您的主目录中的 .bashrc 文件。

您在此处输入的任何命令都将运行。您还可以从此 .bashrc 文件中调用其他脚本。 输入:

nano ~/.bashrc
© www.soinside.com 2019 - 2024. All rights reserved.