首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在awk中使用if/awk语句

在awk中使用if/awk语句
EN

Unix & Linux用户
提问于 2018-03-20 17:40:57
回答 1查看 427关注 0票数 0

通常,如果last通过下面的函数返回任何内容,我可以检测用户的最后登录时间。我的问题是:如果last不返回任何内容,那么我想查看用户的主目录日期和时间,查看最近修改的文件。

代码语言:javascript
复制
lastlogLatest() {
    last -n 1 "${userName}"  | awk ' {
    for( i=1;i<=NF;i++ ) {
        if ( $i ~ /Mon|Tue|Wed|Thu|Fri|Sat|Sun/ ) {
            j = 0
            str = ""
            for ( j=i; j<=NF;j++ ) {
                str = ( str ? (str FS $j):$j )
            }
            print str
            break
        }
    }
}'
}
EN

回答 1

Unix & Linux用户

发布于 2018-03-20 18:37:07

对脚本的下列修改似乎有效:

代码语言:javascript
复制
lastlogLatest() {
    last -n 1 "${userName}"  | awk ' $1 != "wtmp" {
    for( i=1;i<=NF;i++ ) {
        if ( $i ~ /Mon|Tue|Wed|Thu|Fri|Sat|Sun/ ) {
            j = 0
            str = ""
            for ( j=i; j<=NF;j++ ) {
                str = ( str ? (str FS $j):$j )
            }
            print str
            break
        }
    }
}'
}
userName=somebody
lastlogin=$(lastlogLatest)
if [[ -z "$lastlogin" ]]; then
    echo "${userName} not found in lastlog"
   if cd /home/${userName} 2> /dev/null; then
      date -d "@$(find . -type f -printf '%T@\n' 2> /dev/null | sort -n | head -n1)"
   else
      echo "No home directory found for ${userName}" 1>$2
   fi
else
    echo "$lastlogin"
fi

我在awk脚本中添加了一个小的调整,它去掉了告诉我们何时开始wtmp日志的行,这样它就不会将日期提取出来,并假设它是为指定的用户准备的。

另外,请注意,这要求执行它的任何用户都具有检查指定用户的主目录和其中的文件的权限。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/432382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档