硬件和软件盘点

硬件和软件盘点

客观的

收集实验室计算机的硬件和软件信息,尊重学生的隐私。

要收集的信息类型

例子:

  • 系统内存
  • bash版本
  • JVM版本
  • 操作系统版本(内部版本/上次更新)

用户群

  • 操作系统
  • Linux
  • 自由BSD

信息类型避免收集

  • CPU序列号
  • 计算机序列号(例如 的输出sudo lshw
  • 网络接口卡 MAC 地址

交货方式

  • 客户端加入实验室网络并以普通用户身份执行 Bash 脚本(即不是root

约束条件

  • 无进程后台
  • 无需安装分发包之外的自定义软件
  • 无法在任何地方读取任何个人数据
  • 没有代理
  • 无法自行安排在稍后的时间/日期重新执行
  • 脚本保持开源,学生可以随时查看(完全透明)

允许做的事

  • 阻止网络访问,直到脚本运行(注意:执行此操作的代码已经存在,实际上保持 VLAN 关闭,直到“报告”发回并验证。无需对此进行编码
  • 如果只有一个用户有 16GB RAM,尽管这可以唯一地标识他/她,那也没关系

可接受的命令示例

printf -v operating_system \
          'OS X v%s (build %s)' \
          $(sw_vers -productVersion) \
          $(sw_vers -buildVersion)

或者

 local -r linux_kernel_version=$(uname -r)
 printf -v operating_system \
           'Linux (kernel %s)' \
           "$linux_kernel_version"
 if [[ -f /etc/issue ]]; then
   operating_system+=" $(cat /etc/issue | sed 's/ \\n \\l//g')"
 fi

健康)状况

如果这种脚本已经在其他地方可用,用户配置文件“清理”不包含任何个人身份信息,对支持中心有用,那么我选择了错误的项目。最好使用现有的框架并将学习者的精力引导到其他地方。

答案1

您要求的具体物品很简单,可以收集。我猜你正在考虑更复杂的事情,但除非你具体说明我无法推测什么。

  • 系统内存

    $ free -h | gawk  '/Mem:/{print $2}'
    7.8G
    
  • bash版本

     $ bash --version | head -1 
     GNU bash, version 4.2.36(1)-release (x86_64-pc-linux-gnu)
    
     $ bash --version | head -1 | gawk '{print $4}'
     4.2.36(1)-release
    
  • JVM版本

    $ java -version 2>&1 | head -1
    java version "1.6.0_24"
    
    $ java -version 2>&1 | head -1 | gawk '{print $NF}' | sed 's/"//g'
    1.6.0_24
    

    java -version命令打印到标准错误(STDERR),因此为了解析,我们需要将 STDERR 重定向到 STDOUT。在 bash 中,这是由 完成的2>&1

  • 操作系统版本(内部版本/上次更新)

    $ uname -vo
    #1 SMP Debian 3.2.32-1 GNU/Linux
    

    我不确定你所说的上次更新是什么意思。更新什么?内核?有什么软件吗?

如果将所有这些组合到 bash 脚本中,您将得到:

#!/usr/bin/env bash
echo "RAM              : `free -h | awk  '/Mem:/{print $2}'`
Bash version     : `bash --version | head -1 | awk '{print $4}'`
Java version     : `java -version 2>&1 | head -1 | awk '{print $NF}' | sed 's/\"//g'`
Operating System : `uname -s`
OS version       : `uname -v`"

这个简单的脚本在我的系统上返回以下输出:

RAM              : 7.8G
Bash version     : 4.2.36(1)-release
Java version     : 1.6.0_24
Operating System : Linux
OS version       : #1 SMP Debian 3.2.32-1

答案2

这是符合条件的命令列表,但 dpkg 仅适用于基于 debian 的系统。在 Mac/FreeBSD 中,我不确定什么是最好的方法,但这应该是一个好的开始。这些都不需要在全新安装的 ubuntu 中安装。

这为您提供了已安装软件包的完整列表以及带有简短描述的版本。

dpkg -l >> pkg.info

ubuntu 中的 lshw 具有排除敏感信息的选项

lshw -sanitize

这只是显示ubuntu上的版本信息

lsb_release -a

内存信息

free

我的建议是制作一个脚本,将所有这些信息保存到单独的 .info 文件中,然后将它们放入 tar 文件中以便于收集。在“dpkg -l”之后,您可以放置​​一个模式来匹配您想要其信息的特定包。 “dpkg -p”显示有关特定软件包的非常详细的信息,例如“dpkg -p bash”

答案3

检查类似的系统开放式计算机系统。周围有几个,向谷歌询问“硬件软件库存”之类的。自己拼凑一些东西将要破坏或不安全。

答案4

厨师除了部署软件和配置的主要目的之外,还顺便维护一个数据库,其中包含您正在查找的所有客户端上的硬件信息。

如果您想从 Chef 客户端获取此信息,而不与 Chef 服务器打交道,然后通过其他进程聚合信息,那么您想要的是奥海,它会产生如下输出:https://gist.github.com/sparr/5265567

相关内容