﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小码哥-文章分类-linux</title><link>http://www.blogjava.net/canvas/category/31291.html</link><description>谁谓河广，一苇杭之</description><language>zh-cn</language><lastBuildDate>Tue, 06 Nov 2012 20:26:35 GMT</lastBuildDate><pubDate>Tue, 06 Nov 2012 20:26:35 GMT</pubDate><ttl>60</ttl><item><title>几个简单的Makefile</title><link>http://www.blogjava.net/canvas/articles/quick_makefile.html</link><dc:creator>小码哥</dc:creator><author>小码哥</author><pubDate>Tue, 06 Nov 2012 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/quick_makefile.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/390880.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/quick_makefile.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/390880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/390880.html</trackback:ping><description><![CDATA[几个简单适合小程序的Makefile，可直接拷贝使用，自己mark一下，这样长时间不用Makefile也不用去看手册了<br /><br />0.只有一个文件<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#&nbsp;变量的定义，方便使用<br />CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;gcc<br />CCFLAGS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">O2&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">s<br />BIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;test<br />OBJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;root_password_tool_win32.o<br /><br />$(BIN)&nbsp;:&nbsp;$(OBJ)<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CCFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">o&nbsp;test&nbsp;$(OBJ)<br /><br />$(OBJ)&nbsp;:&nbsp;root_password_tool_win32.c<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CCFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c&nbsp;root_password_tool_win32.c<br /><br />.PHONY&nbsp;:&nbsp;clean<br />clean&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rm&nbsp;$(BIN)&nbsp;$(OBJ)<br /><br /></span></div><br /><br />1.简单编译命令行程序，$(CC)前面是tab，不是space<br /><br />一共五个文件：<br />test.c<br />md5.c md5.h<br />password.c password.h<br /><br />main函数在test.c中，test.c文件include了md5.h和password.h<br /><br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;gcc<br />CCFLAGS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">O2&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">s<br />BIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; "> password<br />OBJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;md5.o&nbsp;password.o&nbsp;test.o<br /><br />$(BIN) :&nbsp;$(OBJ)<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CCFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">o&nbsp;password&nbsp;$(OBJ)<br /><br />md5.o&nbsp;:&nbsp;md5.c&nbsp;md5.h<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CCFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c&nbsp;md5.c<br /><br />password.o&nbsp;:&nbsp;password.c&nbsp;password.h<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CCFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000;">c&nbsp;password.c<br /><br />test.o&nbsp;:&nbsp;test.c<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CCFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c&nbsp;test.c<br /><br />.PHONY&nbsp;:&nbsp;clean<br />clean&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rm $(BIN) $(OBJ)<br /></span></div><br />make&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # 编译得到password.exe，这里在windows下cigwin+mingw环境中编译<br />make clean&nbsp;&nbsp;&nbsp; # 清理编译生成的*.o等文件<br /><br />2.使用g++编译win32程序的Makefile，其中简写了一些，可以对比1看看不同之处<br />说明：<br />&nbsp;&nbsp;&nbsp; (0)指定静态库目录，连接静态库<span style="color: #000000; "></span>libcomctl32.a编译程序<br />&nbsp;&nbsp;&nbsp; (1)编译windows资源文件(使用mingw的windres)<br />&nbsp;&nbsp;&nbsp; (2)使用-mwindows编译选项去除弹出的cmd窗口<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g</span><span style="color: #000000; ">++</span><span style="color: #000000; "><br /><br />#&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">O2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;optimization&nbsp;option<br />#&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;build&nbsp;small&nbsp;binary<br />#&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">mwindows&nbsp;:&nbsp;use&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">&nbsp;option&nbsp;to&nbsp;remove&nbsp;the&nbsp;popping&nbsp;cmd&nbsp;window<br />CCFLAGS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">O2&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">s&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">mwindows<br />BIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;test<br />WINDRES&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;windres<br />RES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;resource.o<br />OBJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;main.o&nbsp;md5.o&nbsp;password.o&nbsp;$(RES)<br /><br />#&nbsp;where&nbsp;is&nbsp;your&nbsp;mingw&nbsp;library</span><span style="color: #000000; ">?</span><span style="color: #000000; "><br />LIBPATH&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">C:\Program&nbsp;Files\CodeBlocks\MinGW\lib\</span><span style="color: #000000; ">'</span><span style="color: #000000; "><br /><br />LIBS</span><span style="color: #000000; ">=-</span><span style="color: #000000; ">L$(LIBPATH)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">lcomctl32<br /><br />RM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rm&nbsp;<br /><br />$(BIN):&nbsp;$(OBJ)<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CCFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">o&nbsp;$(BIN)&nbsp;$(OBJ)&nbsp;$(LIBS)<br /><br />main.o:&nbsp;main.cpp<br /><br />md5.o:&nbsp;md5.cpp&nbsp;md5.h<br /><br />password.o:&nbsp;password.cpp&nbsp;password.h<br /><br />#&nbsp;编译资源文件<br />$(RES):&nbsp;resource.rc&nbsp;rpt.ico&nbsp;manifest<br />&nbsp;&nbsp;&nbsp;&nbsp;$(WINDRES)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">o&nbsp;$(RES)&nbsp;resource.rc<br /><br />.PHONY:clean<br />clean:<br />&nbsp;&nbsp;&nbsp;&nbsp;$(RM)&nbsp;$(BIN)&nbsp;$(OBJ)<br /></span></div><br /><br />3.编译静态库<br />其中一些$&lt;，$^, $@是Makefile的自动化变量，详细了解可以看《跟我一起写Makefile》的第五章<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g</span><span style="color: #000000; ">++</span><span style="color: #000000; "><br /><div>OBJS &nbsp; &nbsp; &nbsp; &nbsp; = utp.o utp_utils.o</div><br />#&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">g&nbsp;:&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;debug<br />CFLAGS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">g&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">O2&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">Wall&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">DPOSIX<br />TARGET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;libutp.a<br /><br />.cpp.o:<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c&nbsp;$(CFLAGS)&nbsp;$</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />all:&nbsp;$(TARGET)<br /><br />libutp.a: $(OBJS)<br />&nbsp;&nbsp;&nbsp;&nbsp;ar&nbsp;cru&nbsp;$@&nbsp;$</span><span style="color: #000000; ">^</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;ranlib&nbsp;$@<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />.PHONY&nbsp;:&nbsp;clean<br />clean&nbsp;:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rm&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000;">.o&nbsp;$(TARGET)</span></div><br /><div>4.编译动态库<br />(0)windows下使用mingw编译dll动态库<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; "></span><div>CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = g++<br />OBJS&nbsp;&nbsp;&nbsp; = utp.o utp_utils.o<br />CCFLAGS = -fno-exceptions -fno-rtti -Wall -g -lwsock<br />TARGET&nbsp; = libutp.dll<br /><br />all: $(TARGET)<br /><br />$(TARGET): $(OBJS)<br />&nbsp;&nbsp; &nbsp;-rm -f $(TARGET)<br />&nbsp;&nbsp; &nbsp;$(CC) -shared -o $(TARGET) $(OBJS) -lws2_32<br /><br />.cpp.o:<br />&nbsp;&nbsp; &nbsp;$(CC) -c -DPOSIX -fpic -I . -I utp_config_lib $(CCFLAGS) $&lt;<br /><br />.PHONY: clean<br />clean:<br />&nbsp;&nbsp; &nbsp;-rm -f $(OBJS) $(TARGET)</div><span style="color: #000000; "></span></div><br />(1)linux下编译so动态库<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g</span><span style="color: #000000; ">++</span><span style="color: #000000; "><br />OBJS&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;utp.o&nbsp;utp_utils.o<br />CCFLAGS&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">fno</span><span style="color: #000000; ">-</span><span style="color: #000000; ">exceptions&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">fno</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rtti&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">Wall&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">g<br />TARGET&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;libutp.so<br /><br />all:&nbsp;$(TARGET)<br /><br />$(TARGET):&nbsp;$(OBJS)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rm&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">f&nbsp;$(TARGET)<br />&nbsp;&nbsp;&nbsp;&nbsp;g</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">shared&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">o&nbsp;$(TARGET)&nbsp;$(OBJS)<br /><br />.cpp.o:<br />&nbsp;&nbsp;&nbsp;&nbsp;g</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">c&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">DPOSIX&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">fpic&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">I&nbsp;.&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">I&nbsp;utp_config_lib&nbsp;$(CCFLAGS)&nbsp;$</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; "><br /><br />.PHONY:&nbsp;clean<br />clean:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rm&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">f&nbsp;$(OBJS)&nbsp;CCFLAGS<br /></span></div><br /><br />5.编译多个目标，0-2均是编译单个目标<br />(0) 添加头文件目录<br />(1) 使用自己编译的静态库libutp.a<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g</span><span style="color: #000000; ">++</span><span style="color: #000000; ">&nbsp;<br />CFLAGS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">-</span><span style="color: #000000; ">g<br />LIBUTP_PATH&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">/</span><span style="color: #000000; ">home</span><span style="color: #000000; ">/</span><span style="color: #000000; ">actiontec</span><span style="color: #000000; ">/</span><span style="color: #000000; ">workspace</span><span style="color: #000000; ">/</span><span style="color: #000000; ">code_reading</span><span style="color: #000000; ">/</span><span style="color: #000000; ">third_party</span><span style="color: #000000; ">/</span><span style="color: #000000; ">libutp</span><span style="color: #000000; ">/</span><span style="color: #000000; ">lib<br />INCLUDES&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">-</span><span style="color: #000000; ">I${LIBUTP_PATH}<br />LIBS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">-</span><span style="color: #000000; ">L$(LIBUTP_PATH)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">lutp&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">lpthread&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">lrt<br />TARGET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;all<br /><br />all:&nbsp;server&nbsp;client<br /><br />server:&nbsp;server.cpp<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">o&nbsp;$@&nbsp;$</span><span style="color: #000000; ">^</span><span style="color: #000000; ">&nbsp;$(INCLUDES)&nbsp;$(LIBS)<br /><br />client:&nbsp;client.cpp<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(CFLAGS)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">o&nbsp;$@&nbsp;$</span><span style="color: #000000; ">^</span><span style="color: #000000; ">&nbsp;$(INCLUDES)&nbsp;$(LIBS)<br /><br />.PHONY&nbsp;:&nbsp;clean<br />clean:<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">rm&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">.o&nbsp;server&nbsp;client<br /></span></div></div>以上仅供参考<img src ="http://www.blogjava.net/canvas/aggbug/390880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">小码哥</a> 2012-11-06 15:05 <a href="http://www.blogjava.net/canvas/articles/quick_makefile.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>把ubuntu配置成路由器+DHCP</title><link>http://www.blogjava.net/canvas/articles/router-dhcp.html</link><dc:creator>小码哥</dc:creator><author>小码哥</author><pubDate>Wed, 22 Aug 2012 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/router-dhcp.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/386071.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/router-dhcp.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/386071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/386071.html</trackback:ping><description><![CDATA[<p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">资源：<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; PC A: Ubuntu 12.04 LTS，两块网卡，分别为eth0和eth1，使用eth0连接<wbr>互联网<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; PC B: Windows 7,&nbsp;一块网卡，为eth0<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">目标：<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;使得B通过A连接互联网(IPv4)，即实现A为路由器的功能<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">步骤：<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">PC A:<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; (0)假设eth0已经配置好，PC可以通过eth0连接互联网<wbr>，配置eth1为，如/etc/network/<wbr>interface所示<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auto lo<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iface lo inet loopback<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auto eth0<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iface eth0 inet static<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address 172.16.10.65<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gateway 172.16.10.254<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; netmask 255.255.0.0<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auto eth1<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iface eth1 inet static<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address 192.168.6.1<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; netmask 255.255.255.0<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; network 192.168.6.0<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broadcast 192.168.6.255<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当然，我是删除了network-manager,<wbr>network-manager-gnome的才可以通过配置i<wbr>nterface这个文件来设置网络的<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你也可以通过network-manager来配置。DNS服务<wbr>器可以通过/etc/resolv.conf来配置：<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nameserver 168.95.1.1 #这是我的DNS服务器，你可以配置成你可以访问的，如8.8.<wbr>8.8<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;重启你的网络服务或者重启PC A，以上设置就可以生效。<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; (1)Linux系统自身就有IPv4包转发的功能，在/<wbr>etc/sysctl.conf进行配置，<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;打开IPv4转发功能:<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.ipv4.ip_forward=1<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;输入以下命令使得上面的设置生效(或者重启电脑)：<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sudo sysctl -p<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; (2)通过iptable实现IPv4包转发<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sudo iptables -t nat -A POSTROUTING -s&nbsp;<a href="http://192.168.6.0/24" target="_blank" style="color: #1155cc; ">192.168.6.0/24</a>&nbsp;-o eth0 -j MASQUERADE<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;可以通过iptables-save将iptables rule都保存到文件中，在通过iptables-<wbr>restore读取rule到iptables中，<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;可以自己写一个脚本来实现iptables自动的载入rule，<wbr>或者找到iptables的配置文件来修改<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">PC B<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; (0)将PC B的eth0与PC A的eth1用网线直接连接，配置PC B的eth0为：<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IP ADDRESS : 192.168.6.101<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUBNET MASK: 255.255.255.0<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GATE WAY&nbsp;&nbsp; : 192.168.1.1i<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DNS Server : 168.95.1.1<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;这样PC B就可以通过PC A连接互联网了<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">增强配置：<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;路由器都可以自动给PC分配IP，而不需要手动配置IP，<wbr>这是通过DHCP来实现的。如果也要实现相同的功能，那<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;就需要在PC A上搭建一个DHCP服务器。<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; (0)安装DHCP服务器<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sudo apt-get install isc-dhcp-common isc-dhcp-server<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; (1)配置DHCP<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (i)修改/etc/default/isc-dhcp-<wbr>server<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTERFACES="eth1"<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;(ii)修改/etc/dhcp/dhcpd.conf<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subnet 192.168.6.0 netmask 255.255.255.0 {<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; range 192.168.6.100 192.168.6.200;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option routers 192.168.6.1;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option broadcast-address 192.168.6.255;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option domain-name-servers 168.95.1.1;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default-lease-time 600;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max-lease-time 7200;<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<u></u><u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; "><u></u>&nbsp;<u></u></p><p style="margin: 0px; color: #222222; font-family: arial, sans-serif; line-height: normal; background-color: #ffffff; ">&nbsp;&nbsp;&nbsp; (2)PC B可以自动获取IP了，如果在PC A的eth1上接一个switch，接在switch上所有的P<wbr>C都可以获取IP了</p><img src ="http://www.blogjava.net/canvas/aggbug/386071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">小码哥</a> 2012-08-22 22:30 <a href="http://www.blogjava.net/canvas/articles/router-dhcp.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用飞信(libfetion)定时发天气预报</title><link>http://www.blogjava.net/canvas/articles/libfetion.html</link><dc:creator>小码哥</dc:creator><author>小码哥</author><pubDate>Mon, 23 Nov 2009 06:56:00 GMT</pubDate><guid>http://www.blogjava.net/canvas/articles/libfetion.html</guid><wfw:comment>http://www.blogjava.net/canvas/comments/303341.html</wfw:comment><comments>http://www.blogjava.net/canvas/articles/libfetion.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/canvas/comments/commentRss/303341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/canvas/services/trackbacks/303341.html</trackback:ping><description><![CDATA[什么是libfetion？请访问http://www.libfetion.cn/查看<br />
<br />
以下都是在ubuntu下进行的<br />
参考<br />
http://www.libfetion.cn/Docs-dve/Build-LibFx-on-ubuntu.txt<br />
<br />
请使用svn客户端下载libfetion-gui的源码<br />
http://libfetion-gui.googlecode.com/svn/<br />
<br />
安装开发过程中需要的软件<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">sudo&nbsp;apt</span><span style="color: #000000;">-</span><span style="color: #000000;">get&nbsp;install&nbsp;libc</span><span style="color: #000000;">-</span><span style="color: #000000;">dev<br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">sudo&nbsp;apt</span><span style="color: #000000;">-</span><span style="color: #000000;">get&nbsp;install&nbsp;g</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;<br />
</span><span style="color: #008080;">3</span>&nbsp;<span style="color: #000000;">sudo&nbsp;apt</span><span style="color: #000000;">-</span><span style="color: #000000;">get&nbsp;install&nbsp;libcurl4</span><span style="color: #000000;">-</span><span style="color: #000000;">openssl</span><span style="color: #000000;">-</span><span style="color: #000000;">dev</span></div>
<br />
在trunk/qt4_src/libfetion/lib目录下找到静态库libfetion_32.a，由于代码打算是用python来写，所以制作了一个动态库libfetion.so<br />
具体步骤如下：<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">#</span><span style="color: #008000;">解压静态库为*.o</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">ar&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">x&nbsp;libfetion_32.a<br />
<br />
</span><span style="color: #008000;">#</span><span style="color: #008000;">重新封装为so</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">g</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">shared&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Wall&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">fPIC&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">lcurl&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">pthread&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">.o&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">o&nbsp;libfetion.so<br />
<br />
</span><span style="color: #008000;">#</span><span style="color: #008000;">查看so[可选步骤]</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">nm&nbsp;libfetion.so <br />
</span></div>
<br />
<br />
发送天气预报的python代码如下，libfetion.so中具体的方法请查看trunk/qt4_src/libfetion/include/libfetion/libfetion.h<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">!/usr/bin/env&nbsp;python</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">coding=utf-8</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">only&nbsp;can&nbsp;run&nbsp;at&nbsp;linux</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;os<br />
</span><span style="color: #008080;">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;ctypes<br />
</span><span style="color: #008080;">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;urllib2<br />
</span><span style="color: #008080;">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">城市代码列表</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000;">city_codes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">合肥</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0448</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">安庆</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0452</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">天津</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0133</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">南昌</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0097</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">上海</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0097</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">北京</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0097</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">长沙</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0013</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">常德</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0416</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">北京</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0008</span><span style="color: #800000;">'</span><span style="color: #000000;">,<br />
</span><span style="color: #008080;">&nbsp;19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">银川</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;:&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">CHXX0259</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;21</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;22</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">用户定制城市</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;23</span>&nbsp;<span style="color: #000000;">weather_users&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #008080;">&nbsp;24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">天津</span><span style="color: #800000;">'</span><span style="color: #000000;">:[</span><span style="color: #800000;">'</span><span style="color: #800000;">138*******3</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******7</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******2</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">150*******6</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">135*******1</span><span style="color: #800000;">'</span><span style="color: #000000;">],<br />
</span><span style="color: #008080;">&nbsp;25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">北京</span><span style="color: #800000;">'</span><span style="color: #000000;">:[</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******2</span><span style="color: #800000;">'</span><span style="color: #000000;">],<br />
</span><span style="color: #008080;">&nbsp;26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">银川</span><span style="color: #800000;">'</span><span style="color: #000000;">:[</span><span style="color: #800000;">'</span><span style="color: #800000;">159*******2</span><span style="color: #800000;">'</span><span style="color: #000000;">]<br />
</span><span style="color: #008080;">&nbsp;27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">&nbsp;28</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;29</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">自己手机</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;30</span>&nbsp;<span style="color: #000000;">myself_city_list&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[</span><span style="color: #800000;">'</span><span style="color: #800000;">天津</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">安庆</span><span style="color: #800000;">'</span><span style="color: #000000;">]<br />
</span><span style="color: #008080;">&nbsp;31</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;32</span>&nbsp;<span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;weather:<br />
</span><span style="color: #008080;">&nbsp;33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weatherBaseUrl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">http://www.thinkpage.cn/weather/weather.aspx?uid=&amp;l=zh-CN&amp;p=CMA&amp;a=0&amp;u=C&amp;s=4&amp;m=0&amp;x=1&amp;d=2&amp;fc=&amp;bgc=&amp;bc=&amp;ti=1&amp;in=1&amp;li=2&amp;c=</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">初始化</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__init__</span><span style="color: #000000;">(self):<br />
</span><span style="color: #008080;">&nbsp;36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">pass</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">清空html</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;clear_html(self):<br />
</span><span style="color: #008080;">&nbsp;40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">rm&nbsp;-f&nbsp;*.htm</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">获得需要发送的城市代码</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__getCityToSend</span><span style="color: #000000;">(self):<br />
</span><span style="color: #008080;">&nbsp;45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.city_all&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{}<br />
</span><span style="color: #008080;">&nbsp;46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users.keys():<br />
</span><span style="color: #008080;">&nbsp;47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.city_all[key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;myself_city_list:<br />
</span><span style="color: #008080;">&nbsp;49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.city_all[key]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">获取html</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;get_html(self):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.</span><span style="color: #800080;">__getCityToSend</span><span style="color: #000000;">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;self.city_all.keys():<br />
</span><span style="color: #008080;">&nbsp;55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weatherUrl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.weatherBaseUrl&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;city_codes[key]<br />
</span><span style="color: #008080;">&nbsp;56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;req&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;urllib2.Request(weatherUrl)<br />
</span><span style="color: #008080;">&nbsp;57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;urllib2.urlopen(req)<br />
</span><span style="color: #008080;">&nbsp;58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;res.read()<br />
</span><span style="color: #008080;">&nbsp;59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res.close()<br />
</span><span style="color: #008080;">&nbsp;60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;open(city_codes[key]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">w</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html.write(weather_content)<br />
</span><span style="color: #008080;">&nbsp;62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html.close()<br />
</span><span style="color: #008080;">&nbsp;63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">过滤无用信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;parse_html(self):<br />
</span><span style="color: #008080;">&nbsp;66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;self.city_all.keys():<br />
</span><span style="color: #008080;">&nbsp;67</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;city_codes[key]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">.htm</span><span style="color: #800000;">'</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">获得信息所在行</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">cat&nbsp;%s.htm&nbsp;|grep&nbsp;-E&nbsp;\</span><span style="color: #800000;">'</span><span style="color: #000000;">ltl</span><span style="color: #000000;">|</span><span style="color: #000000;">forecastDay</span><span style="color: #000000;">|</span><span style="color: #000000;">temp\</span><span style="color: #800000;">'</span><span style="color: #800000;">|grep&nbsp;-v&nbsp;spanDate&nbsp;&gt;&nbsp;%s.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;(city_codes[key],city_codes[key])<br />
</span><span style="color: #008080;">&nbsp;71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">去掉html代码</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">sed&nbsp;-i&nbsp;-e&nbsp;\</span><span style="color: #800000;">'</span><span style="color: #000000;">s</span><span style="color: #000000;">/&lt;</span><span style="color: #000000;">[</span><span style="color: #000000;">^&gt;</span><span style="color: #000000;">]</span><span style="color: #000000;">*&gt;//</span><span style="color: #000000;">g\</span><span style="color: #800000;">'</span><span style="color: #800000;">&nbsp;%s.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;city_codes[key]<br />
</span><span style="color: #008080;">&nbsp;75</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">去掉不相关字符</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">sed&nbsp;-i&nbsp;-e&nbsp;\</span><span style="color: #800000;">'</span><span style="color: #000000;">s</span><span style="color: #000000;">/&amp;</span><span style="color: #000000;">deg;</span><span style="color: #000000;">/</span><span style="color: #000000;">&#176;</span><span style="color: #000000;">/</span><span style="color: #000000;">g;s</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">//</span><span style="color: #000000;">g\</span><span style="color: #800000;">'</span><span style="color: #800000;">&nbsp;%s.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;city_codes[key]<br />
</span><span style="color: #008080;">&nbsp;79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;os.popen(cmd)<br />
</span><span style="color: #008080;">&nbsp;80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">根据城市生成消息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__generate_msg</span><span style="color: #000000;">(self,city_key):<br />
</span><span style="color: #008080;">&nbsp;83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">打开文件</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;open(city_codes[city_key]&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">.htm</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">读取信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_lines&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;file_html.readlines()<br />
</span><span style="color: #008080;">&nbsp;88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_html.close()<br />
</span><span style="color: #008080;">&nbsp;89</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">''</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;90</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;line&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_lines:<br />
</span><span style="color: #008080;">&nbsp;91</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weather_content&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;weather_content&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;line.replace(</span><span style="color: #800000;">'</span><span style="color: #800000;">\r\n</span><span style="color: #800000;">'</span><span style="color: #000000;">,</span><span style="color: #800000;">'</span><span style="color: #800000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;92</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;weather_content<br />
</span><span style="color: #008080;">&nbsp;93</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">&nbsp;94</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">登录飞信&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;95</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;fetion_login(self,&nbsp;your_mobile_no,&nbsp;your_pwd):<br />
</span><span style="color: #008080;">&nbsp;96</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ctypes.cdll.LoadLibrary(</span><span style="color: #800000;">'</span><span style="color: #800000;">/home/loh/weather/libfetion.so</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">&nbsp;97</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_init()<br />
</span><span style="color: #008080;">&nbsp;98</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_login(your_mobile_no,your_pwd)<br />
</span><span style="color: #008080;">&nbsp;99</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_set_longsms(True)<br />
</span><span style="color: #008080;">100</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">101</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">退出飞信&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">102</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;fetion_logout(self):<br />
</span><span style="color: #008080;">103</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_loginout()<br />
</span><span style="color: #008080;">104</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fx_terminate()<br />
</span><span style="color: #008080;">105</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">106</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">给自己发信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">107</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;send_msg_to_myself(self):<br />
</span><span style="color: #008080;">108</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;city_key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;myself_city_list:<br />
</span><span style="color: #008080;">109</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.</span><span style="color: #800080;">__generate_msg</span><span style="color: #000000;">(city_key)<br />
</span><span style="color: #008080;">110</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_send_sms_to_self(msg)<br />
</span><span style="color: #008080;">111</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">112</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">给用户发信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">113</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;send_msg(self):<br />
</span><span style="color: #008080;">114</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;city_key&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users.keys():<br />
</span><span style="color: #008080;">115</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;self.</span><span style="color: #800080;">__generate_msg</span><span style="color: #000000;">(city_key)<br />
</span><span style="color: #008080;">116</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users[city_key]:<br />
</span><span style="color: #008080;">117</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_send_sms_by_mobile_no(user,msg)<br />
</span><span style="color: #008080;">118</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">119</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">给用户发送欢迎信息</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">120</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;send_welcome_msg(self,&nbsp;msg):<br />
</span><span style="color: #008080;">121</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_all&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{}<br />
</span><span style="color: #008080;">122</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user_list&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;weather_users.values():<br />
</span><span style="color: #008080;">123</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;user_list:<br />
</span><span style="color: #008080;">124</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_all[user]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">125</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">126</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;user&nbsp;</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;user_all.keys():<br />
</span><span style="color: #008080;">127</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.libc.fs_send_sms_by_mobile_no(user,msg)<br />
</span><span style="color: #008080;">128</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">129</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080;">130</span>&nbsp;<span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">__name__</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">__main__</span><span style="color: #800000;">'</span><span style="color: #000000;">:<br />
</span><span style="color: #008080;">131</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;weather()<br />
</span><span style="color: #008080;">132</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.get_html()<br />
</span><span style="color: #008080;">133</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.parse_html()<br />
</span><span style="color: #008080;">134</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.fetion_login(</span><span style="color: #800000;">'</span><span style="color: #800000;">136*******3</span><span style="color: #800000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000;">'</span><span style="color: #800000;">password</span><span style="color: #800000;">'</span><span style="color: #000000;">)<br />
</span><span style="color: #008080;">135</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.send_msg_to_myself()<br />
</span><span style="color: #008080;">136</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.send_msg()<br />
</span><span style="color: #008080;">137</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">weather.send_welcome_msg('您好！天气预报全线升级，支持国内所有城市以及国外主要大城市，此外您还可以定制多个城市')</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">138</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.fetion_logout()<br />
</span><span style="color: #008080;">139</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;weather.clear_html()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
</span></div>
<br />
<br />
编写脚本和任务计划<br />
编写脚本：<br />
vim weather<br />
写入以下内容<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #000000;">cd&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">home</span><span style="color: #000000;">/</span><span style="color: #000000;">loh</span><span style="color: #000000;">/</span><span style="color: #000000;">weather</span><span style="color: #008000;">#</span><span style="color: #008000;">你的脚本所在目录</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">python&nbsp;weather.py<br />
</span></div>
chmod +x weather<br />
<br />
任务计划：<br />
crontab -e<br />
写入以下内容（每天早上7点1分执行脚本）<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">1</span>&nbsp;<span style="color: #008000;">#</span><span style="color: #008000;">&nbsp;m&nbsp;h&nbsp;&nbsp;dom&nbsp;mon&nbsp;dow&nbsp;&nbsp;&nbsp;command</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">2</span>&nbsp;<span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">7</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">home</span><span style="color: #000000;">/</span><span style="color: #000000;">loh</span><span style="color: #000000;">/</span><span style="color: #000000;">weather</span><span style="color: #000000;">/</span><span style="color: #000000;">weather<br />
</span></div>
<br />
天气预报内容是这样的：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">天津&nbsp;阴&nbsp;9.3&#176;C&nbsp;感觉8&#176;C&nbsp;风力南1级&nbsp;湿度60%&nbsp;今天晴转雾&nbsp;9/2&#176;C&nbsp;明天雾转多云&nbsp;9/0&#176;C</span></div>
<br />
<br />
<img src ="http://www.blogjava.net/canvas/aggbug/303341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/canvas/" target="_blank">小码哥</a> 2009-11-23 14:56 <a href="http://www.blogjava.net/canvas/articles/libfetion.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>