<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[运维进行时]]></title> 
<link>https://blog.liuts.com/index.php</link> 
<description><![CDATA[互联网运维与架构]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[运维进行时]]></copyright>
<item>
<link>https://blog.liuts.com/post/177/</link>
<title><![CDATA[服务器管理系统－手机终端[原创]]]></title> 
<author>root &lt;admin@yourname.com&gt;</author>
<category><![CDATA[Python]]></category>
<pubDate>Tue, 05 Jan 2010 13:31:37 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;每逢佳节回老家不知道孩子们是否都安康，这回好了，3G时代已经到来，不用带上那笨重的本本也能够管理服务器了，只要有手机信号就行，呵呵。系统基于pys60+socket开发，需要什么样的功能，在服务器端写相应的模块即可，客户端升级也比较方便。安全方面使用加密传输＋IP限制就差不多了。<br/><strong>default.py代码</strong><br/><textarea name="code" class="python" rows="15" cols="100">
﻿# -*- coding: utf-8 -*-
import appuifw
import e32
import string
import graphics
import md5
from appuifw import *
from graphics import *
from moni import monitor

"""
作者：刘天斯
邮箱：liutiansi@gmail.com
最后更新：2008-01-26 11:27
功能：Linux服务器手机版(客户端脚本),系统基于pys60+socket开发；
"""

def handle_redraw(rect):
&nbsp;&nbsp;&nbsp;&nbsp;canvas.blit(bgimage)

def exit_key_handler():
&nbsp;&nbsp;&nbsp;&nbsp;app_lock.signal()
&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.set_exit()
&nbsp;&nbsp;&nbsp;&nbsp;
def handle_tab(index):
&nbsp;&nbsp;&nbsp;&nbsp;global app
&nbsp;&nbsp;&nbsp;&nbsp;global lb
&nbsp;&nbsp;&nbsp;&nbsp;global canvas
&nbsp;&nbsp;&nbsp;&nbsp;if index == 0:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.body = canvas
&nbsp;&nbsp;&nbsp;&nbsp;else:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.body = app.getgetinfo(index)

if __name__ == '__main__':
&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.set_tabs(["主界面".decode("utf8"), "数据区".decode("utf8"), "实时区".decode("utf8"), "帮助".decode("utf8")],handle_tab)
&nbsp;&nbsp;&nbsp;&nbsp;app = monitor()
&nbsp;&nbsp;&nbsp;&nbsp;#系统环境初始化；
&nbsp;&nbsp;&nbsp;&nbsp;img=Image.new((208,196))
&nbsp;&nbsp;&nbsp;&nbsp;try:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bgimage=Image.open(u"e:&#92;&#92;System&#92;&#92;Apps&#92;&#92;monitor&#92;&#92;monitor.jpg")
&nbsp;&nbsp;&nbsp;&nbsp;except IOError,e:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note(u"ERROR:"+e,"error")
&nbsp;&nbsp;&nbsp;&nbsp;canvas=appuifw.Canvas(event_callback=None, redraw_callback=handle_redraw)
&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.body = canvas
&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.screen = 'normal'
&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.title = "服务器管理1.0".decode("utf8")
&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.exit_key_handler = exit_key_handler
&nbsp;&nbsp;&nbsp;&nbsp;app_lock = e32.Ao_lock()
&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;#用户验证;
&nbsp;&nbsp;&nbsp;&nbsp;Inputpasswd=appuifw.query("请输入管理密码：".decode("utf8"), "code")
&nbsp;&nbsp;&nbsp;&nbsp;usermm=md5.new()
&nbsp;&nbsp;&nbsp;&nbsp;usermm.update(Inputpasswd)
&nbsp;&nbsp;&nbsp;&nbsp;if usermm.hexdigest()==app.sys_passwd():
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note("验证通过！".decode("utf8"), "conf")
&nbsp;&nbsp;&nbsp;&nbsp;else:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note("密码错误。".decode("utf8"), "error")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_lock.signal()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.set_exit()
&nbsp;&nbsp;&nbsp;&nbsp;app_lock.wait()
</textarea><br/><strong>monitor.py代码</strong><br/><textarea name="code" class="python" rows="15" cols="100">
﻿# -*- coding: utf-8 -*-
import appuifw
import e32
import string
import graphics
from appuifw import *
from graphics import *
import socket
import md5
import time

"""
作者：刘天斯
邮箱：liutiansi@gmail.com
最后更新：2008-01-26 11:27
功能：Linux服务器手机版(客户端脚本),系统基于pys60+socket开发；
"""
class monitor:
&nbsp;&nbsp;&nbsp;&nbsp;#定义退出函数;
&nbsp;&nbsp;&nbsp;&nbsp;def __init__(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#IP列表
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lines=[]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#读取配置文件串
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configstr=[]

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#选择服务器索引
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.index=0

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#返回服务器串
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.getinfo=""

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#空数据串
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.nullinfo="暂无数据！"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#帮助串
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.helpinfo="Linux服务器管理1.0&#92;n　　　系统帮助信息：&#92;n状态：检查服务器应用状态。&#92;n管理：对应用进行操作。&#92;n设置：配制系统参数。"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#标签项索引
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tabsIndex=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#展示文本对象
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.infotxt= appuifw.Text()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.infotxt.style=appuifw.STYLE_BOLD

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#读取配制文件
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configfile=file(u"e:&#92;&#92;System&#92;&#92;Apps&#92;&#92;monitor&#92;&#92;config.ini",'r')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configstr=string.split(self.configfile.read().strip().decode("utf8"),',')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#实时时间+间隔时间+md5+返回记录数
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configfile.close()

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#菜单项
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.ipfw=[u'192.168.0/24',u'192.168.1/24',u'192.168.2/24',u'192.168.2/24']
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.menu = [("状态".decode("utf8"), (("检测".decode("utf8"), self.server_check),("实时".decode("utf8"), self.server_realtime))),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;("管理".decode("utf8"), (("应用管理".decode("utf8"), self.server_do),("最新日志".decode("utf8"), self.server_newslog),("选择日志".decode("utf8"), self.server_selelog))),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;("设置".decode("utf8"), (("实时时间".decode("utf8"), self.sys_realtime),("实时间隔".decode("utf8"), self.sys_gaptime),("修改密码".decode("utf8"), self.sys_repasswd),("记录数目".decode("utf8"), self.sys_lognum))),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;("关于".decode("utf8"), self.sys_about)]

&nbsp;&nbsp;&nbsp;&nbsp;#发送socket指令方法(发送串,显示屏ID)；
&nbsp;&nbsp;&nbsp;&nbsp;def server_sendsocket(self,get_sendstr):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if get_sendstr!="":
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sock.connect(('server.sina.com.cn', 80))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#get_sendstr=base64.urlsafe_b64encode(get_sendstr)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sock.send(get_sendstr)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.getinfo+=sock.recv(1024)+"&#92;n"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sock.close()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;except:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note("socket异常!".decode("utf8"),"conf")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_listinfo(self.tabsIndex)

&nbsp;&nbsp;&nbsp;&nbsp;#操作方法(操作类型,显示屏ID)；
&nbsp;&nbsp;&nbsp;&nbsp;def server_do(self,option=1):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#option=1 检测服务器状态；
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#option=2 实时检测服务器状态；
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#option=3 最新服务器日志；
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#option=4 选择服务器日志；
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if self.index==0 and option!=3:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_list()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.index=appuifw.selection_list(choices=self.lines,search_field=1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if self.index!=None and option!=3:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#返回简IP;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if self.lines[self.index][:3]=="192":
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shortip="1"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if option==3:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_sendsocket(str(option)+",,"+self.configstr[2]+",,"+self.configstr[3])
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alg=Algorithm() #制定自己的算法
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_sendsocket(str(option)+","+str(shortip)+","+self.configstr[2]+","+string.split(self.lines[self.index],'.')[3]+","+self.configstr[3])＋Alg
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#格式：操作ID+IP类型+MD5pw+IP末段+功能码＋算法；

&nbsp;&nbsp;&nbsp;&nbsp;#服务器状态检测；&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;def server_check(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.getinfo=""
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.index=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tabsIndex=1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_do(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lines=[]

&nbsp;&nbsp;&nbsp;&nbsp; #服务器实时状态检测；&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;def server_realtime(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.getinfo=""
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.index=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tabsIndex=2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while 1:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i+=1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i%int(self.configstr[1])==0 or i==int(self.configstr[0]):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_do(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==int(self.configstr[0]):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lines=[]

&nbsp;&nbsp;&nbsp;&nbsp;#服务器最新日志
&nbsp;&nbsp;&nbsp;&nbsp;def server_newslog(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.getinfo=""
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.index=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tabsIndex=1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_do(3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lines=[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;#选择服务器日志
&nbsp;&nbsp;&nbsp;&nbsp;def server_selelog(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.getinfo=""
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.index=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.tabsIndex=1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.server_do(4)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lines=[]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;#获取服务器列表；
&nbsp;&nbsp;&nbsp;&nbsp;def server_list(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iplistFile=open(u"e:&#92;&#92;System&#92;&#92;Apps&#92;&#92;monitor&#92;&#92;ip.txt",'r')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;except IOError,e:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note(u"ERROR:"+e,"error")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverindex=appuifw.selection_list(choices=self.ipfw,search_field=1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for nowline in [l.strip() for l in iplistFile]:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if nowline[:3]==self.ipfw[serverindex][:3]:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lines.append(nowline.decode("utf8"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;del nowline
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iplistFile.close()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.lines.sort()

&nbsp;&nbsp;&nbsp;&nbsp;#写配制文件；
&nbsp;&nbsp;&nbsp;&nbsp;def sys_writesysconfig(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f = file(u"e:&#92;&#92;System&#92;&#92;Apps&#92;&#92;monitor&#92;&#92;config.ini",'w+')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;except IOError,e:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note(u"ERROR:"+e,"error")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print >> f,str(self.configstr[0])+","+str(self.configstr[1])+","+str(self.configstr[2])+","+str(self.configstr[3])
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.seek(0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.close()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note("数据更新成功！".decode("utf8"), "conf")

&nbsp;&nbsp;&nbsp;&nbsp;#配制实时时间；
&nbsp;&nbsp;&nbsp;&nbsp;def sys_realtime(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;realtime = appuifw.query("间隔监控时间：".decode("utf8"), "number",int(self.configstr[0]))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if int(realtime)!=int(self.configstr[0]):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configstr[0]=realtime
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.sys_writesysconfig()

&nbsp;&nbsp;&nbsp;&nbsp;#配制间隔时间；
&nbsp;&nbsp;&nbsp;&nbsp;def sys_gaptime(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gaptime = appuifw.query("实时监控时间：".decode("utf8"), "number",int(self.configstr[1]))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if int(gaptime)!=int(self.configstr[1]):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configstr[1]=gaptime
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.sys_writesysconfig()

&nbsp;&nbsp;&nbsp;&nbsp;#修改密码；
&nbsp;&nbsp;&nbsp;&nbsp;def sys_repasswd(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passwd = appuifw.query("新密码:".decode("utf8"), "code")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if passwd!="":
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usermm=md5.new()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;usermm.update(passwd)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configstr[2]=usermm.hexdigest()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.sys_writesysconfig()

&nbsp;&nbsp;&nbsp;&nbsp;#配制返回记录数；
&nbsp;&nbsp;&nbsp;&nbsp;def sys_lognum(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lognum = appuifw.query("返回记录数：".decode("utf8"), "number",int(self.configstr[3]))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if int(lognum)!=int(self.configstr[3]):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.configstr[3]=lognum
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.sys_writesysconfig()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;#显示数据
&nbsp;&nbsp;&nbsp;&nbsp;def server_listinfo(self,tabsIndex):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.infotxt.set(self.getinfo.decode("utf8"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.body = self.infotxt
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.app.activate_tab(tabsIndex)

&nbsp;&nbsp;&nbsp;&nbsp;#返回PASSWD
&nbsp;&nbsp;&nbsp;&nbsp;def sys_passwd(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;self.configstr[2].strip()

&nbsp;&nbsp;&nbsp;&nbsp;#返回文本对象
&nbsp;&nbsp;&nbsp;&nbsp;def getgetinfo(self,tabsIndex):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if tabsIndex==3:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.infotxt.set(self.helpinfo.decode("utf8"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elif self.tabsIndex==tabsIndex:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.infotxt.set(self.getinfo.decode("utf8"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.infotxt.set(self.nullinfo.decode("utf8"))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self.infotxt
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;#about
&nbsp;&nbsp;&nbsp;&nbsp;def sys_about(self):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appuifw.note(u"Linux Monitor1.0&#92;nAuthor:Liutiansi&#92;nMail:liutiansi@gmail.com&#92;nCopyright:http://blog.liuts.com", "info")
</textarea><br/><br/><strong>支持手机</strong><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><br/>S60 1st：<br/>7650、3650、3660、N-GAGE、N-GAGE QD、松下X700、西门子SX1<br/><br/>S60 2nd：<br/>6600<br/><br/>S60 2nd FP1：<br/>6620（6600美版）、6260、3230、6670、7610、松下X800、联想P930、三星SGH-D728、摩托罗拉V1000<br/><br/>S60 2nd FP2：<br/>6681、6682（6681美版）、6680、6630<br/><br/>S60 2nd FP3：<br/>N70、N70音乐版、N70 IE版、N72、N90<br/><br/>S60 3rd：<br/>3250、3250XM、5500 sport、5500 sport音乐版、E50、E60、E61、E62（E61大陆行）、E61i、E65、E70、N71、N73、N73音乐版、N73 IE版、N75、N77、N80、N91、N91 8GB、N92、N93、N93i、三星SGH-i400、LG KS10<br/><br/>S60 3rd FP1：<br/>5700 XpressMusic、6110 Navigator、6120 classic、6121 classic（6120美版）、6290、N76、N95、E90 Communicator、三星SGH-i520<br/></div></div><br/><strong>平台截图</strong><br/><br/>我的手机MAIN<br/><a href="https://blog.liuts.com/attachment.php?fid=49" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=49" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>主界面<br/><a href="https://blog.liuts.com/attachment.php?fid=53" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=53" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>部分功能菜单<br/><a href="https://blog.liuts.com/attachment.php?fid=50" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=50" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><a href="https://blog.liuts.com/attachment.php?fid=51" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=51" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><a href="https://blog.liuts.com/attachment.php?fid=52" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=52" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><a href="https://blog.liuts.com/attachment.php?fid=48" target="_blank"><img src="https://blog.liuts.com/attachment.php?fid=48" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>打包下载<br/><a href="attachment.php?fid=55">点击这里下载文件</a><br/><br/>如大家有什么疑问或感兴趣的话题可以通过weibo与我交流：<a href="http://t.qq.com/yorkoliu" target="_blank">http://t.qq.com/yorkoliu</a><br/>Tags - <a href="https://blog.liuts.com/tags/pys60/" rel="tag">pys60</a> , <a href="https://blog.liuts.com/tags/%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8%25E7%25AE%25A1%25E7%2590%2586%25E5%25B9%25B3%25E5%258F%25B0/" rel="tag">服务器管理平台</a>
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/177/#blogcomment12</link>
<title><![CDATA[[评论] 服务器管理系统－手机终端[原创]]]></title> 
<author>tonyone &lt;tonyone_2009@gmail.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 07 Jan 2010 14:01:31 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/#blogcomment12</guid> 
<description>
<![CDATA[ 
	太强大了！！多谢博主分享。
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/177/#blogcomment20</link>
<title><![CDATA[[评论] 服务器管理系统－手机终端[原创]]]></title> 
<author>牛逼！ &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Wed, 17 Feb 2010 10:03:03 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/#blogcomment20</guid> 
<description>
<![CDATA[ 
	牛逼！！
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/177/#blogcomment21</link>
<title><![CDATA[[评论] 服务器管理系统－手机终端[原创]]]></title> 
<author>牛逼！ &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Wed, 17 Feb 2010 10:03:14 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/#blogcomment21</guid> 
<description>
<![CDATA[ 
	牛逼！
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/177/#blogcomment22</link>
<title><![CDATA[[评论] 服务器管理系统－手机终端[原创]]]></title> 
<author>liwei6998 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 20 Feb 2010 06:31:53 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/#blogcomment22</guid> 
<description>
<![CDATA[ 
	牛！！！
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/177/#blogcomment28</link>
<title><![CDATA[[评论] 服务器管理系统－手机终端[原创]]]></title> 
<author>nio &lt;o@iclue.net&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Fri, 05 Mar 2010 07:30:13 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/#blogcomment28</guid> 
<description>
<![CDATA[ 
	哥们，强烈支持。<br/><br/>建议移植Android及黑莓。
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/177/#blogcomment44</link>
<title><![CDATA[[评论] 服务器管理系统－手机终端[原创]]]></title> 
<author>撒旦 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Wed, 17 Mar 2010 05:05:05 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/#blogcomment44</guid> 
<description>
<![CDATA[ 
	强悍 s60 5的支持吗？ 5800
]]>
</description>
</item><item>
<link>https://blog.liuts.com/post/177/#blogcomment150</link>
<title><![CDATA[[评论] 服务器管理系统－手机终端[原创]]]></title> 
<author>吕滔 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 22 Aug 2010 02:09:17 +0000</pubDate> 
<guid>https://blog.liuts.com/post/177/#blogcomment150</guid> 
<description>
<![CDATA[ 
	不会用呀。。大哥
]]>
</description>
</item>
</channel>
</rss>