PICNIC

课题4 内含CSV数据的控制页面的取得和往FTP服务器的上传

■ 课题4 

1. 课题4的目标

2. 把CSV数据追加到web控制页面的HTML数据中

3. 各命令的安装

4. 网页取得与过滤功能的例

5. 定期命令执行的调度方法

6. 把CSV文件上传到FTP服务器上

7. 课题4的提出

8. 考察的要点

9. 参考URL

■报告提交系统

 

→提问・讨论用的BBS

←返回目录

2006年4月5日 17:03 更新

 

●课题4的目标

课题4「内含CSV数据控制页面的取得和往FTP服务器的上传」的提出。→从这里提出课题

请活用IT研究生课程中要成为IT技术者最基本的学科与技能
※学习的顺序:
http://cai.cs.shinshu-u.ac.jp/sugsi/info/LecOrdIT.png

这个课题有两个目的。

(1)CSV形式数据生成(PICNIC侧)
以课题3(ver1.2.0.8)为基础、把CSV数据(用逗号隔开的数据)代如web控制画面的HTML数据中

(2)将取得的数据上传到FTP服务器(PC侧)
通过从PICNIC连接可能的Unix(Linux,FreeBSD,Sun等)或是WindowsPC取得HTML页面以及使用各种加工工具,取得页面,检测出CSV数据,过滤,加工,最后把加工好的CSV数据上传到FTP服务器。

・wget:HTML页取得程序
・grep:过滤器
・sed :stream编辑器
・date:日期/时刻取得与表示

因为CSV数据是通用性很高的数据形式,可以把它数据库化,或者是用于掌握各PICNIC最近情况等各种用途。

<附记>
关于各种命令的使用方法、可以用man电子手册、或是用例如像: wget --help 一样的在后面加上 –help后,使用方法会表示出来。

●把CSV数据追加到web控制页面的HTML数据中

取得HTML数据后为了简便加工工作、在web控制画面的HTML数据中、追加以CSV,....开头的各种数据。把他们放到页脚最后。

(1)CSV数据形式

CSV行用逗号隔开的数据,依次为以下内容。
※这次IP地址于端口号不记载到数据中。

<CSV数据形式(实际为一行)>
-------------------------------------------
CSV,
学号,
Firm Version,
MAC Address,
RA0,RA1,RA2,RA3,RA5,
RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7,
门开闭回数counter(终了)
-------------------------------------------

<输出例>

CSV,02TA699X, 1.2.0.9, 00:02:CB:01:2E:75, 0, 0, 0, 0, 27, High , Low , High , High , High , Low , Low , Low , 0

→实际的web页面(HTML)的例子


(2)程序的变更

把以下的语句追加到Web控制画面#4的页脚部分。

<web控制#4页脚部分追加的语句>

;
;++++++++++++++ 各种CSV数据行 +++++++++++[ver0.9]
;
DA "CSV," ; CSV行识别字符串
DA "02TA699X," ; 学号
DA "$8," ; 版本号码($8)
DA "$0," ; MAC地址($0)
DA "@\x00" ; RA0 '@",0000_0000b
DA ", "
DA "@\x01" ; RA1 '@",0000_0001b
DA ", "
DA "@\x02" ; RA2 '@",0000_0010b
DA ", "
DA "@\x03" ; RA3 '@",0000_0011b
DA ", "
DA "@\x04" ; RA5 '@",0000_0100b(显示℃的换算值)
DA ", "
DA "@\x10" ; RB0 '@',0001_0000b
DA ", "
DA "@\x11" ; RB1 '@',0001_0001b
DA ", "
DA "@\x12" ; RB2 '@',0001_0010b
DA ", "
DA "@\x13" ; RB3 '@',0001_0011b
DA ", "
DA "@\x14" ; RB4 '@',0001_0100b
DA ", "
DA "@\x15" ; RB5 '@',0001_0101b
DA ", "
DA "@\x16" ; RB6 '@',0001_0110b
DA ", "
DA "@\x17" ; RB7 '@',0001_0111b
DA ", "
DA "$9" ; 门开闭回数counter
DA "\n"

 

●各命令的安装

(1)Unix

最近的Linux-OS等以标准安装有sh, bash,grep,sed,date, wget等。


(2)WindowsPC

有以下两种方法。

[A] 安装Cygwin环境
[B] 安装Win32- GNU Unix命令互换实用程序


[A] Cygwin环境

从Cygwin的主页下在安装。
http://www.cygwin.com/
http://www.cygwin.com/setup.exe

grep, sed, date:Base分类中选择default安装。
wget:Web分类中选择 wget 安装。

Bash在command shell中操作。


[B] Win32-Unix互换命令环境(2005/3/25 修正)

用GNU utilities for Win32、安装Unix互换命令。

从这里下载(12.6MB) unxutils.exe并安装。

安装时、选择Basic。
命令集:放到C:\Windows\System32\
使用手册:放到C:\Program Files\UnxUtils\ 。

各命令从DOS窗口调出的 sh 上使用。
关于使用方法、从sh上输入例如man wget 等命令调出电子使用手册。

WinXP的情况下:
【开始】→【程序】→【附件】→<DOS>
或者、
【开始】→【指定文件名执行】→ cmd.exe

然后、输入c:\windows\system32\sh、切换到sh的互换环境。
与Unix(Cygwin)上的shell command是相同的(非常的方便!)。

※注意点 在WinXp下、要安装到具有超级用户权限的用英文字符为用户名下

●网页取得与过滤功能的例(2005/3/25 改正)

※以下、假定PICNIC连接在 IPアドレス 192.168.1.200 / http端口 8080号 的状态下。(试验时、PICNIC通上电源)

(1)用wget取得PICNIC的网页

HTML页面取得的例:

wget http://192.168.1.200:8080/
→ 保存到index.html

wget -O picnic.html http://192.168.1.200:8080/
→ 保存到picnic.html

wget -O - http://192.168.1.200:8080/
→ 写到标准输出中

wget -O picnic.html http://192.168.1.200:8080/modify.cgi?RB6=H
→ 先把PICNIC的RB6端口状态改变为High、然后保存到picnic.html。(即使没有浏览器、也可以通过wget命令远距离操作!)※2005/3/25改正(变量-O追加)


(2)用grep命令检测出CSV行

提出含有"CSV"字符串的行。

  grep "CSV" inputfile.txt


(3)用sed实现日期/时刻的附加

  echo "s/^/`date`,/g" > date.sed

※注意:一部分日文版Unix(例如:TurboLinux 8 workstation的日文rvt等)的环境下、LOCALE变为ja_JP.eucJP、date的输出是EUC日本語。在这种情况下、为了把date输出表现为英语、使用env 命令、指定LANG=C后实行date就可以了。
例: env LANG=C date

<参考URL>
locale 的設定

 

下面,使用date.sed、在输入文件的开头附加日期/时刻。

  sed -f date.sed inputfile.csv


(4)最终的连续处理

例:追加到02TA699X.csv的情况下

[A] 在Unix(Cygwin)环境下

picnic-get.sh
-----------------------------------------------------------------------
echo "s/^/`date`,/g" > date.sed ; wget -O - http://192.168.1.200:8080/ | grep --text "CSV" | sed -f date.sed >> 02TA699X.csv
-----------------------------------------------------------------------

[B] 在Win32环境下

像下面的例子一样、用sh -c 依次调出。

picnic-get.cmd
-----------------------------------------------------------------------
echo off
sh -c "echo s/^/`date`,/g > date.sed"
sh -c "wget -O - http://192.168.1.200:8080/ | grep --text 'CSV' > picnic.csv"
sh -c "cat picnic.csv | sed -f date.sed >> 02TA699X.csv"
-----------------------------------------------------------------------

<得出的CSV文件的例>

02TA699X.csv的例

●定期命令执行的调度方法

(1)在Unix下

使用Cron或者at命令。


(2)Cygwin环境、Win32环境下

[A] Win2000,XP下、在schedule起动的情况下:
可以使用AT命令。

WinXP下:
到【开始】→【设定】→【控制面板】→【任务】里设定

※在任务揽中可是定的任务是以天的时刻为最小单位的。


[B] 使用免费软件:

例:Multi Function Alarm Ver.1.52(免费软件)
http://member.nifty.ne.jp/T_sugiyama/#MFA

[C] 在Cygwin上使用cron所需的设定:

为了在Cygwin上使用cron、在NT中安装cygrunsrv也是可能的。
http://www.amy.hi-ho.ne.jp/tachibana/cygwin/cron.html

●把CSV文件上传到FTP服务器上

例:学号为 02TA699X的情况下

02TA699X.csv这个CSV文件位于当前目录中、把它用anonymous用户上传到服务器的incoming/picnic中。

从FTP客户端自动上传有以下两种方法

(1)使用FTP命令输入文件的方法(在可以使用-s的Cygwin环境下ftp用户端可以使用
(2)用FTP命令列挙的文件、反复在询问的方法(在可以使用-n的Unix环境下ftp用户端可以使用)

(※2003年10月18日追加)

(1)使用FTP命令输入文件的方法(在可以使用-s的Cygwin环境下ftp用户端可以使用

<FTP命令输入文件 ftplogin.txt>


open ysserve.cs.shinshu-u.ac.jp
anonymous
wasaki@cs.shinshu-u.ac.jp  ←各自的信箱地址
cd /incoming/picnic
del 02TA699X.csv
put 02TA699X.csv       ←要上传的CSV文件
quit


<实行例> 实行ftp -s:ftplogin.txt


THINKPAD2# ftp -s:ftplogin.txt
ftp> open ysserve.cs.shinshu-u.ac.jp
Connected to ysserve.cs.shinshu-u.ac.jp.
220 ysserve.cs.shinshu-u.ac.jp FTP server (Version 6.00LS) ready.
User (ysserve.cs.shinshu-u.ac.jp:(none)): anonymous  ←用户名(实际上不被显示)
331 Guest login ok, send your email address as password. wasaki@cs.shinshu-u.ac.jp  ←密码(实际上不被显示)
230- Welcome to Anonymous FTP server 'ysserve.cs.shinshu-u.ac.jp'!
230-
230 Guest login ok, access restrictions apply.
ftp>
ftp> cd /incoming/picnic
250 CWD command successful.
ftp> put 02TA699X.csv
200 PORT command successful.
150 Opening ASCII mode data connection for '02TA699X.csv'.
226 Transfer complete.
ftp: 40 bytes sent in 0.00Seconds 40000.00Kbytes/sec.
ftp> quit
221 Goodbye.

(2)用FTP命令列挙的文件、反复在询问的方法(使用-n)

<列举FTP命令的文件 ftpupload.txt>


open ysserve.cs.shinshu-u.ac.jp
user anonymous wasaki@cs.shinshu-u.ac.jp
cd /incoming/picnic
del 02TA699X.csv
put 02TA699X.csv
quit

<实行例> 实行ftp -v -n < ftpupload.txt


THINKPAD2# ftp -v -n < ftpupload.txt
ftp> open ysserve.cs.shinshu-u.ac.jp
Connected to ysserve.cs.shinshu-u.ac.jp.
220 ysserve.cs.shinshu-u.ac.jp FTP server (Version 6.00LS) ready.
User (ysserve.cs.shinshu-u.ac.jp:(none)): anonymous  ←用户名(实际上不被显示)
331 Guest login ok, send your email address as password. wasaki@cs.shinshu-u.ac.jp  ←密码(实际上不被显示)
230- Welcome to Anonymous FTP server 'ysserve.cs.shinshu-u.ac.jp'!
230-
230 Guest login ok, access restrictions apply.
ftp>
ftp> cd /incoming/picnic
250 CWD command successful.
ftp> put 02TA699X.csv
200 PORT command successful.
150 Opening ASCII mode data connection for '02TA699X.csv'.
226 Transfer complete.
ftp: 40 bytes sent in 0.00Seconds 40000.00Kbytes/sec.
ftp> quit
221 Goodbye.

 


从这里确认上传的情况。

ftp://ysserve.cs.shinshu-u.ac.jp/incoming/picnic/

在安装MS-Excel的Windows系统下、从InternetExplorer可以直接打开FTP文件夹中的CSV文件。
#请不要删除别的同学的文件!

 

●課題4的提交

【課題4】(総合実験)

[A]CSV形式数据生成(PICNIC侧)
以课题3(ver1.2.0.8)为基础、把CSV数据(用逗号隔开的数据)代如web控制画面的HTML数据中

[B]将取得的数据上传到FTP服务器(PC侧)
通过从PICNIC连接可能的Unix(Linux,FreeBSD,Sun等)或是WindowsPC取得HTML页面以及使用各种加工工具,取得页面,检测出CSV数据,过滤,加工,最后把加工好的CSV数据上传到FTP服务器。

【A】CSV形式数据的生成(PICNIC侧)的报告的提出

(1)更新固件,使CSV数据可以在web控制画面上标示出来。

(2)从门传感器的状态、计数器值的变化、web控制画面上确认机能是否正常运作。

(3)汇编源文件版本号码变为、ver1.2.0.9,另外web控制画面的页脚部分变更位各自的学号。

(4)做成后的汇编源文件 用v1208e4.asm 的文件名保存。

(5)把v1208e4.asm 上传到报告提出系统。报告领受后,进行评分。

<提出方法>
把做成的汇编文件上传到报告提出系统中(扩展名为 *.asm 。不是*.hex) 

提出的文件经过机能确认后,如果机能不完备需要再提出,如果机能完备判定为[A]合格。

从这里提交课题3[A](课题编号:picnic-exp04)

(6)变为「等待判定」如果判定结果一直不出来请来信到这里。

(7)判定为再提出的情况下,改正不正确的地方、改为v1208e4a.asm等的文件名后再提出。

(8)判定为合格后,课题3[A]修了。(接下来作课题3[B])


【B】将取得的数据上传到FTP服务器(PC侧)

(9)准备一台从网络中可以连接PICNIC的计算机、并使他可以使用sh,,bash,grep,sed,date,wget等工具。

(10) 确认从PICNIC中取得上面[A]中输出的CSV文件,与这些文件的追加与记录。日期・时刻是否追加、设定为10秒钟取3至4回

(11)关于定期命令执行的调度方法,这次不用设定。

(12)做成的以学号.csv为文件名的CSV文件在当前目录中、把它已anonymous用户形式上传到ftp服务器(ysserve.cs.shinshu-u.ac.jp)的incoming/picnic目录下。

(13)打开以下URL、确认各自上传的CSV文件。
   ftp://ysserve.cs.shinshu-u.ac.jp/incoming/picnic/

(14)上传确认后、把上传的CSV文件的URL里的内容输入到以下报告提出系统的教官备注栏中,提交上来。

<提出方法>
提出的CSV文件的URL经过确认后,如果不完备需要再提出,如果完备判定为合格。

从这里提出课题3[B](课题编号:picnic-exp03)

(15)变为「等待判定」如果判定结果一直不出来请来信到这里。

(16)判定为再提出的情况下,改正不正确的地方、改正后再提出。

(17)判定为合格后,课题3[B]修了。(整个报告修了)


完成了以上内容的同学们,大家辛苦了!到这里这门课所有的课题都结束了。今后也希望大家在信州大学IT研究生院里积极的学习和研究、积极参加远程教育的各种活动,在各个方面也请配合我们的工作。m(_o_)m

●研究的重点

以下是这次报告的研究重点。在报告中没有必要提出,请各自在写程序前在头脑中整理。

 

[1] 关于从PICNIC中取得数据到服务器上传,用什么样的周期比较好呢?在这方面用不同的应用软件中想必会有很大的不同。比如说,很简单的一个[温度记录装置],会要求以10分钟为周期计策并且以数小时的计策结果一起上传。那么我们这次的家安全系统,如果要求不在家时的报警速度要快的话,可能要在不在家的时候以1分钟以下为周期计策与通报。针对这方面请大家好好研究一下。

[2] 用wget命令加上CGI变量(?RB6=Hなど)、可以即时控制PICNIC的端口出力。讨论一下利用这个技能能够做出什么样的应用软件。

[3] wgetコマンドでCGI引数(?RB6=Hなど)を与えることで、シェルスクリプトからのPICNICのポート出力制御が即時可能である。この機能を利用したアプリケーション例について検討してみよ。

 

●参考URL

UNIX Tools for Win32
http://crocus.sci.kumamoto-u.ac.jp/physics/astro/fujimoto/home/junixwin32.htm

Cygwin
http://www.cygwin.com/

GNU utilities for Win32
http://unxutils.sourceforge.net/

GNU FSF/UNESCO Free Software Directory
http://www.gnu.org/directory/

 

信州大学インターネット大学院

wasaki@cs.shinshu-u.ac.jp
Copyright(c) 2005 Katsumi Wasaki. All rights reserved.