热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在UNIX中,如何查找昨天或更早登录的用户-InUNIX,howtofinduserswhohaveloggedinyesterdayorearlier

cananyonepleasetellmehowcanImakealistofuserswhohaveloggedinyesterdayorearlierbut

can anyone please tell me how can I make a list of users who have logged in yesterday or earlier but have not logged out yet. without repeating the same user in the list.

任何人都可以告诉我如何列出昨天或更早登录但尚未登出的用户列表。不重复列表中的相同用户。

2 个解决方案

#1


12  

last | fgrep "still logged in" | cut -d" " -f1 | uniq -u

#2


0  

You could do it programatically e.g.

你可以以编程方式进行,例如

In Python:

在Python中:

from pyutmp import UtmpFile
import time
import datetime

for utmp in UtmpFile():
    # utmp is a Utmp object
    if utmp.ut_user_process:
        duration=(time.time()-utmp.ut_time)
        if duration > (24*60*60):
            if not utmp.ut_user in users:
                    users.append(utmp.ut_user)
                    print '%s logged in at %s session duration: %d:%d:%d [%s] on tty %s from %s' % (utmp.ut_user, time.ctime(utmp.ut_time), (duration/3600), ((duration%3600)/60), (duration%60), datetime.timedelta(secOnds=duration), utmp.ut_line, utmp.ut_host)

In Perl:

在Perl中:

#! /usr/bin/perl -w

use lib './blib/lib', './blib/arch';
use Getopt::Std;
use User::Utmp qw(:constants);
use Socket;
use strict;

my @utmp;
my %ut_type = (BOOT_TIME()     => "BOOT_TIME",
           DEAD_PROCESS()  => "DEAD_PROCESS",
           EMPTY()         => "EMPTY",
           INIT_PROCESS()  => "INIT_PROCESS",
           LOGIN_PROCESS() => "LOGIN_PROCESS",
           NEW_TIME()      => "NEW_TIME",
           OLD_TIME()      => "OLD_TIME",
           RUN_LVL()       => "RUN_LVL",
           USER_PROCESS()  => "USER_PROCESS");
my ($user,$duration,$host,$hostAddr,$hostName,$start,$startX,$startXms,$line,$pid,%users);

   if (User::Utmp::HAS_UTMPX()) {
      @utmp = User::Utmp::getutx();
   } else {
      @utmp = User::Utmp::getut();
   }

  print "\nActive Users - loged in for more than a day\n";

  foreach my $entry (@utmp)
  {
     unless ($entry->{"ut_type"} != USER_PROCESS || $users{$entry->{"ut_user"}} ) {
        $user           = $entry->{"ut_user"};
        $host           = $entry->{"ut_host"};
        $hostAddr       = $entry->{"ut_addr"};
        $start          = $entry->{"ut_time"};
        $startX         = $entry->{"ut_tv"};
        $startXms       = $entry->{tv_usec};
        $line           = $entry->{"ut_line"};
        $pid            = $entry->{"ut_pid"};
        $duration       = time - $start;

        next if ($duration <(24*60*60));
        $users{$user} = $user;

        if ($hostAddr) {
          $hostName     = gethostbyaddr($hostAddr, AF_INET) ;
          $hostName .= " (" ;
          $hostName .= join(".", unpack("C4", $hostAddr));
          $hostName .= ")";
        } else {
          $hostName="";
        }

         printf "User: %s, has been logged in since: %s, duration %d:%d:%d [%d days %d hours %d mins %d secs], on %s (PID: %s), from %s [%s]\n", $user, scalar(localtime($start)), $duration/3600, ($duration%3600)/60, $duration%60, ($duration/(3600*24)), $duration/3600, ($duration%3600)/60, $duration%60, $line, $pid, $host, $hostName;
     }
  }
  print "\n\n";

推荐阅读
  • iOS 不定参数 详解 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
author-avatar
beijing750
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有