linux - AWS SSM 自定义清单
问题描述
我正在尝试设置自定义清单类型以显示 Linux 实例磁盘使用情况,因为它在本文中针对 Windows 实例显示:https ://aws.amazon.com/blogs/mt/get-disk-utilization-of-your-fleet -using-ec2-systems-manager-custom-inventory-types/
我一直在尝试创建与上面链接中的 PowerShell 脚本中给出的逻辑相同的逻辑,但我无法找到将我的 Linux 磁盘使用命令输出转换为 JSON 格式的方法。我无法安装jq
或任何其他软件。
这是我的脚本:
#!/bin/sh
output=$(df -hTP | grep -vE '^tmpfs|cdrom' | awk '{print $1,$3,$6}')
content= echo "{\"SchemaVersion\":\"1.0\",\"TypeName\":\"Custom:LinuxDiskUsage\",\"Content\":{$output}}"
instanceid=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
如何更改此脚本,以便获得与 Windows 实例显示的结果相同的结果?
当前输出为:
{
"SchemaVersion" : "1.0",
"TypeName" : "Custom:LinuxDiskUsage",
"Content" : {
Filesystem Size Use% devtmpfs 474M 0% /dev/xvda1 8.0G 17%
}
}
但我希望得到以下内容:
{
"SchemaVersion" : "1.0",
"TypeName" : "Custom:LinuxDiskUsage",
"Content" : {
"Filesystem" : "/dev/xvda1",
"Size" : "8.0G",
"Use%": "17%"
}
}
解决方案
output=$(df -hTP | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print "{ \"Filesystem\": \""$1"\", \"Size\": \""$3"\", \"Use\%\": \""$6"\"},"}')
content= echo "{\"SchemaVersion\":\"1.0\",\"TypeName\":\"Custom:LinuxDiskUsage\",\"Content\":[$output]}"
will do it. Basically, since you don't use anything to generate JSON you have to generate your own. There might be comma too much in your output. That could be fixed with a join or cutting the last character out.
推荐阅读
- c# - 如何在树状数据中将存储在子对象中的数值迭代和求和到父对象
- javascript - Async / Await with Firebase / Firestore 在 forEach 中
- excel - 根据现有列表创建和更新工作表
- php - Wordpress 错误:本网站出现严重错误。请检查您的站点管理员电子邮件收件箱以获取说明
- javascript - 如何导出 Canva Render 有带有 CSS 修改的 GIF
- xtext - 无法解析 JvmTypeReference
- angular - 可以使用 angular 将 firebase 文档及其所有子集合复制到另一个文档
- python - 如何比较 Python 中具有 np.nan 值的 2 个列表,因为 np.nan 不可比较?
- wordpress - 将支付 API 与 wordpress 集成
- angular - 在 Angular 中:如何检查发送 Id 的上一个路由,然后应用 if else 条件