按组名,用户名和上次登录linux

时间:2017-03-03 13:48:51

标签: linux bash ubuntu virtual-machine virtualbox

我创建了一个名为monitornsuaccounts.sh的脚本,该脚本应将其输出文件附加到useraccountstatus.log。 useraccountstatus.log位于目录/ var / local / nsu / logs /.

此脚本的输出应说明每个用户名以及有关每个用户名的以下信息:用户名,上次登录,用户主目录和关联的组。最好每个信息都应有列。

我用于用户名的命令是sudo cat / etc / passwd | grep'/ home'。最后是找到每个用户的最后一次登录。组是查找每个用户的组。当我运行该命令时,输出文件仅显示我当前用户而不是所有用户所需的数据。任何人的任何建议将不胜感激。

#!/bin/bash
usernames=sudo cat /etc/passwd | grep ‘/home’
echo “$usernames” > /home/daniel/names.txt
mlast=$(cat names.txt | xargs -n1 last)
mgroup=$(cat names.txt | xargs -n1 groups)
cat names.txt > /var/local/nsu/logs/useraccountstatus.log
echo “$mlast” >>/var/local/nsu/logs/useraccountstatus.log
echo “$mgroup” >>/var/local/nsu/logs/useraccountstatus.log

1 个答案:

答案 0 :(得分:0)

您的脚本中存在很多问题。

  1. 您对用户的定义。你确定这是你想要的吗?例如:root在/ home下没有目录。

  2. 留意你的报价。 public static class Context { private static IHttpContextAccessor HttpContextAccessor; public static void Configure(IHttpContextAccessor httpContextAccessor) { HttpContextAccessor = httpContextAccessor; } private static Uri GetAbsoluteUri() { var request = HttpContextAccessor.HttpContext.Request; UriBuilder uriBuilder = new UriBuilder(); uriBuilder.Scheme = request.Scheme; uriBuilder.Host = request.Host.Host; uriBuilder.Path = request.Path.ToString(); uriBuilder.Query = request.QueryString.ToString(); return uriBuilder.Uri; } // Similar methods for Url/AbsolutePath which internally call GetAbsoluteUri public static string GetAbsoluteUrl() { } public static string GetAbsolutePath() { } } 不返回任何内容,而cat /etc/passwd | grep ‘/home’返回/ etc / passwd中的节列表

  3. 您可能只想要一个用户名列表,而不是一个节列表。

    的一些方面
    cat /etc/passwd | grep 'home'
  4. cat /etc/passwd | grep 'home' | sed 's/:.*//' 为什么sudo

  5. 中查看您的作业
    sudo cat /etc/passwd

    这没有意义。你可能会尝试做一个

    usernames=sudo cat /etc/passwd | grep ‘/home’
    
  6. 这只是剧本的第一行。

    无论如何,如果你的脚本没有按预期工作,你需要做一些调试。第一个问题,特别是如果你没有经验,是“我写的命令能给出我期望的结果吗?”所以在你的情况下,你应该尝试usernames=`sudo cat /etc/passwd | grep '/home'| sed 's/:.*//'` ,你会发现它没有给你预期的结果。即使使用正确的引号,您也会得到一个节列表,这也不是您所期望的。您是否看过cat /etc/passwd | grep ‘/home’并且该文件的内容是您想要的?我猜不是:它是空的。

    只是一个快速的提示,让你开始朝着正确的方向前进(尽管仍有一些问题,人们可能会反对这种背景)

    /home/daniel/names.txt

    您需要对此进行润色并使输出更有用。