Bash 脚本last_sudo以显示 auth.log 中的最后一个 sudo 条目



我正在/usr/local/bin 中寻找一个 bash 脚本,它执行以下操作。

如果当前用户是普通用户,则脚本将显示该用户的最后一个 sudo 条目 auth.log。如果当前用户是根用户,则需要一个参数,该参数是在 auth.log 中显示最后一个 sudo 条目的用户名。 对脚本使用情况执行必要的检查。以普通用户(即使是"test"或未来用户(身份运行此脚本也不需要在它前面加上 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

即兴创作你写的东西:

#!/bin/bash
me=$(whoami)
log=/var/log/auth.log
if [[ "$me" = "root" ]]; then
  [[ -z "$1" ]] && printf "Usage: $0 usernamen" >&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 usernamen" >&2 && exit 2
user="$1"
fi
grep -e 'sudo.*COMMAND' $log | tail -n 1
exit 0

谢谢大家...这个剧本是通缉的,我想...

codeforester..我修改了一点..这就是我想要的..谢谢

不存在这样的脚本,你必须编写一个。

这是一个(未经测试的(骨架:

#!/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和表亲不是全局可读的。

最新更新