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



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

当我发出以下命令时:

root@OpenWrt:~#digitemp_DS9097-

digitemp的回复是:

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

我发现了这个例子,其中使用带有AWK和SED的CRON脚本读取c值,并更新HTML文件。

当我试图将脚本粘贴到/etc/crontabs/root时,一些qutation标记被替换为。。。在VI编辑器中。我试着使用Nano编辑器,但它只是用^?^?^替换了qutation标记。我并没有像我希望的那样理解AWK,所以我很难弄清楚剧本的作者是否使用了错误的qutation标记,或者我不能输入正确的字符是否还有其他原因。

如有任何意见,我们将不胜感激。

这是那篇博客文章的格式,它有非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_DS9097的手册(http://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

相关内容

  • 没有找到相关文章

最新更新