我有一个要求,我需要获取为多个节点安装的主机名,内存,核心,存储,软件包(约1k)。 我已经用刀解决了这个问题。
@Entity(indices = [Index(value = ["title"], unique = true)], tableName ="tasks")
class Task(
var title: String = "",
var description: String = "",
var date: Date,
@Embedded
var remind: Constants.RemindPeriod = Constants.RemindPeriod.MIN5,
@Embedded
var prior: Priority) : Serializable {
@PrimaryKey(autoGenerate = true)
var id: Long = 0}
此命令的典型输出如下;
private fun checkDatabaseState() {
doAsync {
val db = App.database
val entityCount = db.taskDao().getTasksCount().or(0)
isDatabaseNotEmpty = entityCount > 0
}
}
但是,有些细节我不需要;
$ knife search node 'hostname:HostName1 OR hostname:HostName2 OR hostname:HostName3' -a hostname -a cpu.cores -a memory.total -a rpm -a filesystem.by_device -F j|jq '.'
属性的输出为我们提供了rpm包名称,体系结构,版本和发行版信息,如何将多个属性的输出连接在一行中(类似于运行已安装yum list 命令;例如loger-multipath.x86_64 0.4.9-123.el7)编辑:
经过大量搜索后,这是进度:
{
"results": 3,
"rows": [
{
"MyHostName1": {
"hostname": "MyHostName1",
"cpu.cores": 4,
"memory.total": "15645184kB",
"rpm": {
"loger-multipath": [
{
"version": "0.4.9",
"release": "123.el7",
"arch": "x86_64"
}
],
"python": [
{
"version": "7.19.0",
"release": "19.el7",
"arch": "x86_64"
}
]
},
"filesystem.by_device": {
"/apps/logger/root_my-root": {
"kb_size": "8125880",
"kb_used": "2426760",
"kb_available": "5263308",
"percent_used": "32%",
"mount_options": [
"rw",
"discard",
"data=ordered"
],
"uuid": "87ujrf56-6yu6-654r-yu43-uy67yg43ws67",
"mounts": [
"/"
]
}
}
}
}
}
以及相应的输出
rpm
我知道这似乎有点混乱;欢迎任何帮助
答案 0 :(得分:0)
查看问题中提供的json,看来您的查询未对您指定的键使用正确的值-即hostname
-您在感觉上指定了hostname:HostName1
它必须为hostname:MyHostName1
。
此外,您可以从node
命令中删除search
参数,并在查询中将其指定,例如node:my.node.name
。