客观的
收集实验室计算机的硬件和软件信息,尊重学生的隐私。
要收集的信息类型
例子:
- 系统内存
- 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