在bash脚本中,我试图从last
例如:
last bob -n 1
这给了我:
bob tty1 Fri Jul 18 10:43 - 10:43 (00:00)
wtmp begins Wed Feb 5 17:47:13 2014
然后从该字符串中提取日期,并将其插入lastb
以获取自上次成功登录以来失败登录的次数。
例如:
lastb bob -t $MYLASTLOGIN
man lastb显示日期格式需要为-t YYYYMMDDHHMMSS
答案 0 :(得分:0)
您可以尝试将日期字符串与grep
匹配,将结果存储在变量中,使用date
转换并将结果放入命令中:
LOGINDATE=$(last bob -n1 | egrep -o '[A-Z][a-z]{2} [A-Z][a-z]{2} [0-9]{1,2} [0-9]{2}:[0-9]{2}')
BLOCKDATE=$(date --date="$LOGINDATE" "+%Y%m%d%H%M%S")
lastb bob -t $BLOCKDATE
答案 1 :(得分:0)
user=bob lastb $user -t $(date -d "$(last $user | head -n 1 | tr -s '[:space:]' '\t' | cut -f 4-7)" +%Y%m%d%H%M%S)
更可读
user=bob
last_login=$(last $user | head -n 1 | tr -s '[:space:]' '\t' | cut -f 4-7)
datetime=$(date -d "$last_login" +%Y%m%d%H%M%S)
lastb $user -t $datetime
请注意,我的last
输出与您的输出略有不同,还有一个额外字段:相应地调整cut
列
$ last glennj -n 1
glennj pts/7 :0 Sun Jul 20 19:01 still logged in
wtmp begins Fri Jul 4 21:15:28 2014