【发布时间】:2020-06-07 19:33:02
【问题描述】:
我正在编写一个 bash 脚本以将“smartctl -a /dev/xx”的输出发送到耳语 DB(石墨/碳/grafana 设置的一部分)。
我使用 awk 中的 printf 来清理输出,然后再发送到 Whisper DB,但我想不出一种方法来删除 awk 的 %s printf 输出中的逗号(从数字中)。 (awk的格式控制字母)
命令是(我已经清理了一些发布,完整的原始脚本链接在底部):
smartctl -a /dev/${drivenvme} | \
awk -v date="$(date +"%s")" '\
/Power On Hours: /{pohours=$4} \
END {
printf "blah.server.POHhours %s %s \n", pohours, date;
}'
| /usr/bin/nc -w 3 172.17.69.42 2003
这是通过管道传输到上述 awk 命令中的相关原始 smartctl 数据:
root@freenas:~ # smartctl -a /dev/nvme2
Power On Hours: 39,001
在上面的 awk 命令运行后,这是结果 / 通过管道传送到 netcat (/usr/bin/nc):
`blah.server.POHhours 39,001 1591556405`
所以上面发送的是:POHhours 39,001
但我需要它发送:POHhours 39001(即不带逗号)
有什么想法吗?
虽然我没有直接通过管道连接到 netcat,而是将 awk 输出保存到临时文件(即 "> /tmp/out.txt" ),然后:
在读取 /tmp/out.txt 时,将 "" 换成 "," 然后 > netcat -w 3 ....
但我对如何在不使用临时文件的情况下解决此问题的想法更加好奇。 (谢谢!)
这里是完整的原始 bash 脚本:https://pastebin.com/sTQEWcdj
及其输出样本(即发送到石墨/耳语数据库的内容):https://pastebin.com/0JBKkNTy
【问题讨论】: