2017-02-05 23 views
0

我正在寻找/ usr/local/bin中的bash脚本,它执行以下操作。bash脚本last_sudo在auth.log中显示最后的sudo条目

如果当前用户是普通用户,则该脚本将显示auth.log中该用户的最后一个sudo条目。如果当前用户是根用户,则需要一个参数,这是用户在auth.log中显示最后一个sudo条目的用户名。对脚本使用进行必要的检查。以普通用户身份运行此脚本(即使是“测试”或未来用户)也不应要求在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 

 

#!/bin/bash 

i=$(whoami) 
log=/var/log/auth.log 
if [$i=!root] 
egrep $i $log 
+0

我已删除了15%...误抄... 是的,我知道..最后,但我想从/var/log/auth.log只 –

+0

到grep为什么不''如果[“$ EUID”-ne'0'];然后grep“$ USER”“/var/log/auth.log”; fi | tail -n 1'(假设你的'auth.log'是一个纯文本文件,而不是'wtmp'格式 - 否则你将需要'last'作为建议) –

+0

是的..谢谢大卫和chooroba ..... ....如果当前用户是根,它需要一个参数,我该怎么做?或者,#/ usr/local/bin/last_sudo约翰 –

回答

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 '/bin/sudo/' "$log" | grep "$user" | tail -1 
exit 0 
+0

此脚本可能不适用于大多数Linux机器,因为/var/log/auth.log通常只能由root读取。所以你脚本的最后一部分会给你一个拒绝的权限或类似的东西。 – ffledgling

0

没有这样的脚本存在,你必须写一个。

这里的(未经测试)骨架:

#!/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和表兄弟不是世界默认读取。

+0

我有chmod 0777 /var/log/auth.log只是为了学习....输出不正确...尝试 –

+0

什么是不正确的?你期望的输出是什么,你得到的输出是什么? – ffledgling

+0

“/ 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 –

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 

谢谢大家......这个剧本是想我想......

codeforester ..我修改了一下..它就是我想要的..谢谢你