Bash脚本last_sudo以在auth.log中显示最后一个sudo条目
我正在/usr/local/bin中寻找一个bash脚本,它执行以下操作 如果当前用户是普通用户,脚本将在auth.log中显示该用户的最后一个sudo条目。如果当前用户是root用户,则需要一个参数,即在auth.log中为其显示最后一个sudo条目的用户名。对脚本使用情况执行必要的检查。作为普通用户(甚至作为“测试”或未来用户)运行此脚本不需要在它前面加sudo 示例执行:Bash脚本last_sudo以在auth.log中显示最后一个sudo条目,bash,Bash,我正在/usr/local/bin中寻找一个bash脚本,它执行以下操作 如果当前用户是普通用户,脚本将在auth.log中显示该用户的最后一个sudo条目。如果当前用户是root用户,则需要一个参数,即在auth.log中为其显示最后一个sudo条目的用户名。对脚本使用情况执行必要的检查。作为普通用户(甚至作为“测试”或未来用户)运行此脚本不需要在它前面加sudo 示例执行: $ /usr/local/bin/last_sudo (or, # /usr/local/bin/last_sudo
$ /usr/local/bin/last_sudo (or, # /usr/local/bin/last_sudo john)
Dec 20 16:05:16 john-linux sudo: john : TTY=pts/0 ; PWD=/home/john/Desktop ; USER=root ; COMMAND=/sbin/reboot now
不存在这样的脚本,您必须编写一个 以下是一个(未经测试的)骨架:
#!/usr/bin/env bash
if [[ -v SUDO_UID ]]; then
grep '/bin/sudo' /var/log/auth.log | grep "$SUDO_USER" | tail -1
else
if [[ $# -lt 1 ]]; then
echo "You're running this script as root, please provide a username" >&2
echo "usage: $0 USERNAME"
else
grep '/bin/sudo' /var/log/auth.log | grep "$1" | tail -1
fi
fi
此脚本需要通过sudo运行,因为默认情况下,
/var/log/auth.log
和cossins是不可读的。临时修改您所写的内容:
#!/bin/bash
me=$(whoami)
log=/var/log/auth.log
if [[ "$me" = "root" ]]; then
[[ -z "$1" ]] && printf "Usage: $0 username\n" >&2 && exit 2
user="$1"
fi
grep '/bin/sudo/' "$log" | grep "$user" | tail -1
exit 0
谢谢大家。。。我想这是我想要的剧本
codeforester。。我修改了一点。。这就是我想要的。。谢谢你我已经删除了15%。。。错抄了。。。是的,我知道。。最后但我只想从/var/log/auth.log grep为什么不
if[“$EUID”-ne'0'”;然后grep“$USER”“/var/log/auth.log”;fi | tail-n1
(假设您的auth.log
是纯文本文件,而不是wtmp
格式——否则您将需要建议的last
)是。。谢谢david amd chooroba………如果当前用户是根用户,它需要一个参数,我该怎么做?或者,#/usr/local/bin/last_sudo john您可以创建第二个帮助程序脚本,或者只编写一个函数
。测试$UID
(或$EUID
,此处应相同),然后ifroot
调用函数
否则调用函数sudo
(将sudo
作为第一个参数传递)。(您的函数
可能只是调用/usr/local/bin/last_sudo
我有chmod 0777/var/log/auth.log只是为了学习…输出不正确…尝试使用“arapi”和root执行时也不起作用。什么不正确?您期望的输出是什么,您得到的输出是什么?“/usr/local/bin/last_sudo john”12月20日16:05:16 john linux sudo:john:TTY=pts/0;PWD=/home/john/Desktop;USER=root;COMMAND=/sbin/reboot now输出我期待上面的结果..当我键入“last_sudo test”时“作为root用户,我应该得到如上所述的输出。很抱歉。您的脚本也有些工作。我改为grep'sudo'/var/log/auth.log此脚本可能无法在大多数Linux设备上工作,因为/var/log/auth.log通常只能由root用户读取。因此,您的脚本的最后一位将为您提供拒绝权限或类似的内容。
#!/bin/bash
me=$(whoami)
log=/var/log/auth.log
if [[ "$me" = "root" ]]; then
[[ -z "$1" ]] && printf "Usage: $0 username\n" >&2 && exit 2
user="$1"
fi
grep '/bin/sudo/' "$log" | grep "$user" | tail -1
exit 0
#!/bin/bash
me=$(whoami)
log=/var/log/auth.log
if [[ "$me" = "root" ]]; then
[[ -z "$1" ]] && printf "Usage: $0 username\n" >&2 && exit 2
user="$1"
fi
grep -e 'sudo.*COMMAND' $log | tail -n 1
exit 0