首页 > 解决方案 > 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%"
              }
}

标签: linuxbashamazon-web-servicesaws-ssm

解决方案


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.


推荐阅读