先日の記事でYAMAHA WLX302 cacti templateのscriptを修正した。
前回は、curlで取得したHTTP DATAを加工して利用していたが、データの取得が不安定だった。
原因は特定していませんが、HTTPから取得する際にデータの取りこぼしがありました。
今回は、telenetを利用して取得していきます。
wlx302のtelnetは1ユーザーしか許可していない。
よって別端末からwlx302にtelnetでログインしていると、データは取得出来ません。
まずは、telnetにログインしてデータを取得するscriptを設置
使用しているwlx302のtelnetはloginIDとpasswdは設定していない。
設定している場合は、一番最初のechoのあとに、ID
次のechoの後に、passwdを入力
#!/bin/sh sleep 1;echo sleep 1;echo sleep 3;echo "show status wlan-controller ap list member" sleep 3;echo "show environment" sleep 1;echo exit
これを、wlxauto.shで保存し、telnetへパイプで渡す。sleepはネットワーク環境等で調整する。
/bin/sh /usr/share/cacti/site/scripts/wlxauto.sh |telnet 192.168.xxx.xxx Trying 192.168.xxx.xxx... Connected to 192.168.xxx.xxx. Escape character is '^]'. Password: WLX302 BootROM Ver.1.xx WLX302 Rev.12.xx.xx (Tue Jan 5 17:53:58 2016) Copyright (c) 1994-2015 Yamaha Corporation. All Rights Reserved. 00:a0:de:xx:xx:xx, 00:a0:de:xx:xx:xx, 00:a0:de:xx:xx:xx Memory 256Mbytes > > show status wlan-controller ap list member [00:a0:de:xx:xx:xx] Connection : -- Last update : Mar 30 09:14:24 2016 System name : WLX302_S44xxxxxx System location : IP address : 192.168.xxx.xxx [module1] Channel : 1 Transmit power rate : 100 Number of connection : 1 [module2] Channel : 36 Transmit power rate : 100 Number of connection : 3 > show environment WLX302 BootROM Ver.1.xx WLX302 Rev.12.xx.xx (Tue Jan 5 17:53:58 2016) main: WLX302 ver=00 serial=S44xxxxxx MAC-Address=00:a0:de:xx:xx:xx MAC-Addre ss=00:a0:de:xx:xx:xx MAC-Address=00:a0:de:xx:xx:xx CPU: 1%(5sec) 4%(1min) 4%(5min) Memory: 28% used Firmware: internal Config. file: 0 Boot time: 2016/03/25 21:52:58 +09:00 Current time: 2016/03/30 09:14:58 +09:00 Elapsed time from boot: 4days 11:22:00 Security Class: 1, FORGET: ON, TELNET: OFF Inside Temperature(C.): 36 Power: PoE State of cooperation: NONE > Connection closed by foreign host.
このようにデータが流れれば取得出来ている。
wlxget.shを書き直す。
データ加工はうまく書けないので、いじくり回した結果このようになりました。
/bin/sh /usr/share/cacti/site/scripts/wlxauto.sh |telnet 192.168.xxx.xxx > /tmp/wlxtelnetget.log wlxload=`cat /tmp/wlxtelnetget.log |sed -e '36,36!d'|cut -c29-30` wlxmem=`cat /tmp/wlxtelnetget.log |sed -e '36,36!d'|cut -c50-51` wlxtemp=`cat /tmp/wlxtelnetget.log |sed -e '42,42!d'|cut -c25-26` wlx24as=`cat /tmp/wlxtelnetget.log |sed -e '25,25!d'|cut -c24-25` wlx5as=`cat /tmp/wlxtelnetget.log | sed -e '29,29!d'|cut -c24-25` wlxload=`echo $wlxload` wlxmem=`echo $wlxmem` wlxtemp=`echo $wlxtemp` wlx24as=`echo $wlx24as` wlx5as=`echo $wlx5as` # wlxload:4 wlxmem:29 wlxtemp:38 wlx24as:1 wlx5as:4 #CPU (5sec) printf ' wlxload:'$wlxload printf ' wlxmem:'$wlxmem printf ' wlxtemp:'$wlxtemp printf ' wlx24as:'$wlx24as printf ' wlx5as:'$wlx5as rm /tmp/wlxtelnetget.log exit 0
走らせてみる。
$ sh wlxget.sh Connection closed by foreign host. wlxload:4 wlxmem:28 wlxtemp:36 wlx24as:1 wlx5as:3$