使用AWK和SED读取传感器,并将值输出到html文件

时间:2014-02-23 03:04:26

标签: bash sed awk openwrt

我有一个带有openWRT的TP-Link WR703N,连接到单线DS18B20温度传感器。我的目标是让路由器显示当前的温度。在网页上。我正在使用digitemp来读取传感器

当我发出以下命令时:

  

root @ OpenWrt:〜#digitemp_DS9097 -a

digitemp的回复是:

  

DigiTemp v3.5.0版权所有1996-2007 by Brian C. Lane
  GNU Public License v2.0 - http://www.digitemp.com
  2月23日02:46:31传感器0 C:25.44 F:77.79

我找到this example,其中使用带有AWK和SED的CRON脚本来读取c值,并更新HTML文件。

当我尝试将脚本粘贴到/ etc / crontabs / root时,一些qoutation标记在VI编辑器中被替换为....我尝试使用Nano编辑器,但它只是用^?^?^替换了qoutation标记。我并不理解AWK,所以我很难弄清楚脚本的作者是否使用了错误的qoutation-marks,或者是否还有其他原因导致我无法输入正确的字符。

非常感谢任何输入。

1 个答案:

答案 0 :(得分:1)

该博客帖子的格式,它有非ASCII引号。只需编辑它们即可修复。

*/1 * * * * TEMP=$(digitemp_DS9097 -a | grep -i sensor | awk '{print $7}'); sed -i -r "14s,>[^<]*</,>${TEMP}</," /www/index.html

我不确定该行的其余部分是否正确,我的sed没有-r标志,并且脚本尝试更改第14行(因此14s ......),这是你是否完全从博客中复制了html非常挑剔。我改用了这个:

*/1 * * * * TEMP=$(digitemp_DS9097 -a |grep -i sensor | awk '{print $7}');sed -i.bak "s,\\(66cc00.*\">\\)[^<]*</,\\1$TEMP</,"  /www/index.html

匹配行上的颜色编号。额外的\\(...\\)正在抓取,以便我可以在替换中再次使用它\\1

我刚刚阅读了digitemp_DS9097http://www.linuxcertif.com/man/1/digitemp_DS9097/)的手册 - 您最好将其作为digitemp_DS9097 -q -t 0 -O"%.2C"运行,它会直接将您的输出作为单个摄氏数,不需要grep / awk。例如:

*/1 * * * * TEMP=$(digitemp_DS9097 -q -t 0 -O"%.2C");sed -i.bak "s,\\(66cc00.*\">\\)[^<]*</,\\1$TEMP</,"  /www/index.html