网格铁艺网格照片墙怎么制作

zbwh886 的BLOG
用户名:zbwh886
文章数:52
评论数:318
访问量:165435
注册日期:
阅读量:5863
阅读量:12276
阅读量:378315
阅读量:1070970
51CTO推荐博文
&&&&在使用zabbix的过程中,我们经常有这样的需求:查看CPU或内存等监控项在某一时间段内的graph曲线图。通常的做法是进入"Latest data"界面,找到主机的监控项,点击右侧的"Graph",然后拖动时间条来寻找自己想要查看的时间段。这样做太麻烦了!&&&&因此我写了一个脚本,来获取监控项在任意时间段的graph,并保存到本地(png格式)。此脚本可以跟Email告警脚本结合起来,实现在告警邮件里附上监控项的graph图片。&&&&一、效果图&&&&假如某一设备CPU load的监控项ID为25222。下面是获取25222在不同时间段的graph。&&& 1、CPU load当前一个小时内的graph,图形宽度800&&&&2、CPU load当前2个小时内的graph,图形宽度800&&&&3、CPU load在 09:30:00到10:30:00的graph,图形宽度800&&&&4、CPU load在 09:30:00到10:30:00的graph,图形宽度1000&&&&二、getItemGraph.sh脚本&&&&1、脚本功能&&&&获取某一个监控项在某个时间段的graph,默认时间段为当前时间一个小时以内,可根据传入参数而改变。graph以png格式保存在/tmp/graph目录。&&& 2、脚本命令行参数&&&&脚本共有3个必需参数,3个可选参数,一个help参数:&&&&-U USERNAME&&&& zabbix登录用户名,必需参数&&& -P PASSWORD&&&& zabbix登录密码,必需参数&&& -I ITEMID&&&&&& 监控项ID,必需参数&&& -s STIME&&&&&&& graph起始时间start time,可选参数,格式:年月日时分秒&&&&&&&&&&&&&&&&&&&&如果不传入此参数,则stop time默认为当前时间。&&& -p PERIOD&&&&&& graph持续时长,可选参数,默认为一个小时&&&&&&&&&&&&&&&&&&&&一般情况下:stop time = start time + period&&& -w WIDTH&&&&&&& graph图形宽度,默认为800&&& -h&&&&&&&&&&&&& 输出帮助信息然后退出&&&&执行脚本前,需要先修改脚本内的ZBX_URL变量:#&自行修改ZBX_URL变量,改为你的zabbix的web访问地址,其他变量不需要改变
ZBX_URL="http://zabbix-frontend-hostname/zabbix"&&&&3、脚本执行实例&&& 获取当前一个小时内的graphshell#&./getItemGraph.sh&-U&Admin&-P&xxxx&-I&xxxx&&&&获取当前两个小时内的graphshell#&./getItemGraph.sh&-U&Admin&-P&xxxx&-I&xxxx&-p&7200&&&&获取自定义时间段内的graph,比如: 09:30:00到11:30:00shell#&./getItemGraph.sh&-U&Admin&-P&xxxx&-I&xxxx&-s&00&-p&7200&&& 获取自定义时间段内的graph,且图形宽度为1000,比如: 09:30:00到11:30:00shell#&./getItemGraph.sh&-U&Admin&-P&xxxx&-I&xxxx&-s&00&-p&7200&-w&1000&&&&4、脚本代码#!/bin/bash
#&Filename:&&&&getItemGraph.sh
#&Revision:&&&&1.0
#&Date:&&&&&&&&
#&Author:&&&&&&Qicheng
#&Website:&&&&&http://qicheng0211./
#&Description:&获取某一个监控项在某个时间段的graph
#&Notes:&&&&&&&默认时间段为当前时间一个小时以内,可根据传入参数而改变
#&&&&&&&&&&&&&&graph以png格式保存在/tmp/graph目录
#&自行修改ZBX_URL变量,改为你的zabbix的web访问地址,其他变量不需要改变
ZBX_URL="http://zabbix-frontend-hostname/zabbix"
USERNAME=""
PASSWORD=""
PERIOD=3600
GRAPH_DIR="/tmp/graph"
COOKIE="/tmp/zabbix_cookie"
CURL="/usr/bin/curl"
INDEX_URL="$ZBX_URL/index.php"
CHART_URL="$ZBX_URL/chart.php"
function&help()
&&&&cat&&&&HELP
&&&&$0&-U&&username&&-P&&password&&-I&&itemid&&[-s&&stime&]&[-p&&period&]&[-w&&width&]&[-h]
&&&&-U&USERNAME&&&&&zabbix&login&username,&mandatory&parameter
&&&&-P&PASSWORD&&&&&zabbix&login&password,&mandatory&parameter
&&&&-I&ITEMID&&&&&&&itemid,&integer,&mandatory&parameter
&&&&-s&STIME&&&&&&&&graph&start&time,&integer
&&&&&&&&&&&&&&&&&&&&Example:&00
&&&&-p&PERIOD&&&&&&&period&in&seconds,&integer
&&&&&&&&&&&&&&&&&&&&Default:&$PERIOD
&&&&-w&WIDTH&&&&&&&&graph&width,&integer
&&&&&&&&&&&&&&&&&&&&Default:&$WIDTH
&&&&-h&&&&&&&&&&&&&&show&this&help&and&exit
&&&&&&&&exit&1
function&check_integer()
&&&&#&判断参数,如果不是整数返回1
&&&&local&ret=`echo&"$*"&|&sed&'s/[0-9]//g'`
&&&&[&-n&"$ret"&]&&&&return&1
&&&&return&0
if&[&$#&==&0&];&then
while&getopts&U:P:I:s:p:w:h&OPTION;do
&&&&case&$OPTION&in
&&&&&&&&U)&USERNAME=$OPTARG
&&&&&&&&;;
&&&&&&&&P)&PASSWORD=$OPTARG
&&&&&&&&;;
&&&&&&&&I)&ITEMID=$OPTARG
&&&&&&&&check_integer&"$ITEMID"&||&{&echo&"ERROR:&Field&'ITEMID'&is&not&integer.";&exit&1;}
&&&&&&&&;;
&&&&&&&&s)&STIME=$OPTARG
&&&&&&&&check_integer&"$STIME"&||&{&echo&"ERROR:&Field&'STIME'&is&not&integer.";&exit&1;}
&&&&&&&&;;
&&&&&&&&p)&PERIOD=$OPTARG
&&&&&&&&check_integer&"$PERIOD"&||&{&echo&"ERROR:&Field&'PERIOD'&is&not&integer.";&exit&1;}
&&&&&&&&[&$PERIOD&-lt&3600&-o&$PERIOD&-gt&&]&&&&{&echo&"ERROR:&Incorrect&value&$PERIOD&for&PERIOD&field:&must&be&between&3600&and&.";&exit&1;}
&&&&&&&&;;
&&&&&&&&w)&WIDTH=$OPTARG
&&&&&&&&check_integer&"$WIDTH"&||&{&echo&"ERROR:&Field&'WIDTH'&is&not&integer.";&exit&1;}
&&&&&&&&;;
&&&&&&&&h|\?)&help
&&&&&&&&;;
#&USERNAME、PASSWORD、ITEMID为必需参数
[&-z&"$USERNAME"&-o&-z&"$PASSWORD"&-o&-z&"$ITEMID"&]&&&&{&echo&"ERROR:&Missing&mandatory&parameter.";&}
#&如果没有传入STIME参数,STIME的值为当前时间减去PERIOD
[&"$STIME"&==&""&]&&&&STIME=`date&-d&"now&-${PERIOD}&second"&+%Y%m%d%H%M%S`
echo&USERNAME=$USERNAME&PASSWORD=$PASSWORD&ITEMID=$ITEMID&STIME=$STIME&PERIOD=$PERIOD&WIDTH=$WIDTH
if&[&!&-s&"$COOKIE"&];then
&&&&#&如果cookie文件不存在或者为空,则重新登录zabbix,并保存cookie文件
&&&&${CURL}&-c&${COOKIE}&-d&"name=${USERNAME}&password=${PASSWORD}&autologin=1&enter=Sign+in"&$INDEX_URL&|&egrep&-o&"(Login&name&or&password&is&incorrect|Account&is&blocked.*seconds)"
&&&&#&如果登录失败则退出脚本,并清空cookie文件
&&&&[&${PIPESTATUS[1]}&-eq&0&]&&&&{&:&"$COOKIE";&exit&1;}
[&-d&"$GRAPH_DIR"&]&||&mkdir&-p&"$GRAPH_DIR"
PNG_PATH="$GRAPH_DIR/$ITEMID.$STIME.$PERIOD.${WIDTH}.png"
#&获取item的graph,保存为png图片
${CURL}&-b&${COOKIE}&-d&"itemid=${ITEMID}&period=${PERIOD}&stime=${STIME}&width=${WIDTH}"&$CHART_URL&&&"$PNG_PATH"
[&-s&"$PNG_PATH"&]&&&&echo&"Saved&the&graph&as&$PNG_PATH"&||&echo&"Failed&to&get&the&graph."
echo&"If&the&graph&is&not&correct,&please&check&whether&the&parameters&are&correct&or&clean&$COOKIE&file."&&&&脚本文件在附件提供下载,如果有意见请指正~转载请注明出处http://qicheng1/1543673本文出自 “” 博客,请务必保留此出处
了这篇文章
附件下载:  
类别:┆阅读(0)┆评论(0)
10:33:20 10:35:34 11:10:05 16:22:05 16:27:28 16:33:28 16:46:38 16:48:57 17:07:03
请输入验证码:用户名:qq
文章数:62
评论数:13
访问量:19881
注册日期:
阅读量:5863
阅读量:12276
阅读量:378315
阅读量:1070970
[匿名]印引小子:
51CTO推荐博文
& zabbix是一款非常主流监控软件,以简单易用为人称道。zabbix拥有完善的api方便大家通过第三方调用,所以今天介绍一下如何利用python完成对zabbix api调用。& &zabbix api主要通过http协议进行通讯,这里我们使用数据是json格式数据进行交互。& &介绍zabbix api的地址是“/api_jsonrpc.php”这里先用linux系统命令做个演示:如何获取zabbix的登录token,下面返回的结果是一个json对应的result是结果,也就是你想要得到的token[root@salt-node1&zabbix]#&curl&-XPOST&http://192.168.198.116/api_jsonrpc.php&&-H&'Content-Type:application/json'&-d&'{
&&&&&&"jsonrpc":&"2.0",
&&&&&&"method":&"user.login",
&&&&&&"params":&{
&&&&&&&&&&"user":&"admin",
&&&&&&&&&&"password":&"zabbix"
&&&&&&"id":&0
{"jsonrpc":"2.0","result":"f2e8bbaf7ea78a0328f19e","id":0}看上去只是一个post的http请求那我们就用python来搞一下吧首先我们选的是urllib2模块,之所以用这个是因为python本身自带此模块增加系统的兼容性[root@salt-node1&tmp]#&python&zabbix.py&
f037e64bb1d3e1d717ecb
[root@salt-node1&tmp]#&cat&zabbix.py
#coding:utf-8
import&json
import&urllib2
import&logging
logging.basicConfig(filename='./my_log_test.log',format='%(asctime)s&-&%(name)s&-&%(levelname)s&-&%(message)s',)
zbx_url&=&'http://192.168.199.224:88/api_jsonrpc.php'
zabbix_user&=&'admin'
zabbix_pwd&=&''
def&get_token():
&&&&url&=&zbx_url
&&&&#这里定义一个header的字典,方便填写全部的http头信息
&&&&header&=&{"Content-Type":&"application/json"}
&&&&#&这里是一个需要发送的json数据
&&&&data&=&'''{
&&&&&&&&&&&&"jsonrpc":&"2.0",
&&&&&&&&&&&&"method":&"user.login",
&&&&&&&&&&&&"params":&{
&&&&&&&&&&&&&&&&"user":&"%s",
&&&&&&&&&&&&&&&&"password":&"%s"
&&&&&&&&&&&&},
&&&&&&&&&&&&"id":&0
&&&&&&&&}'''&%&(zabbix_user,zabbix_pwd)
&&&&#&创建一个请求的对象
&&&&request&=&urllib2.Request(url,data)
&&&&#遍历获取http头信息
&&&&for&key&in&header:
&&&&&&&&request.add_header(key,header[key])
&&&&#发送请求,最终返回token
&&&&&&&&result&=&urllib2.urlopen(request)
&&&&except&urllib2.URLError&as&e:
&&&&&&&&print&"Auth&Failed,&Please&Check&Your&Name&And&Password:",e.code
&&&&&&&&response&=&json.loads(result.read())
&&&&&&&&result.close()
&&&&&&&&return&response['result']
print&get_zbx_token()现在你已经获取到zabbix的token了就可以做一些别的事情了,这里大家可以尝试获取一下主机信息例子:这是一个curl完成和获取主机信息的操作[root@salt-node1&tmp]#&&curl&-k&&-H&'Content-Type:&application/json'&http://192.168.198.116/api_jsonrpc.php&-d&'{
&&&&&&&&&&"jsonrpc":&"2.0",
&&&&&&&&&&"method":&"host.get",
&&&&&&&&&&"params":&{
&&&&&&&&&&"output":&"extend",
&&&&&&&&&&"filter":&{
&&&&&&&&&&&&&&"name":&[
&&&&&&&&&&&&&&&&&&"Zabbix&server"
&&&&&&&&&&&&&&]
&&&&&&&&&&}
&&&&&&&&&&},
&&&&&&&&&&"auth":&"d6e4eb7e6bd884fec2ccffe",
&&&&&&&&&&"id":&1&}'
{"jsonrpc":"2.0","result":[{"hostid":"10084","proxy_hostid":"0","host":"Zabbix&server","status":"0","disable_until":"0","error":"","available":"1","errors_from":"0","lastaccess":"0","ipmi_authtype":"-1","ipmi_privilege":"2","ipmi_username":"","ipmi_password":"","ipmi_disable_until":"0","ipmi_available":"0","snmp_disable_until":"0","snmp_available":"0","maintenanceid":"0","maintenance_status":"0","maintenance_type":"0","maintenance_from":"0","ipmi_errors_from":"0","snmp_errors_from":"0","ipmi_error":"","snmp_error":"","jmx_disable_until":"0","jmx_available":"0","jmx_errors_from":"0","jmx_error":"","name":"Zabbix&server","flags":"0","templateid":"0","description":"","tls_connect":"1","tls_accept":"1","tls_issuer":"","tls_subject":"","tls_psk_identity":"","tls_psk":""}],"id":1}现在用python完成上面操作,因为zabbix api请求的json内主要三部分:操作zabbix方法,params,token会产生变化,所有这里构建了一个方法,只需要传入这三个参数即可def&zbx_req(zbx_action,&zbx_params,&zbx_token):
&&&&'''&get&host&info&'''
&&&&header&=&{"Content-Type":&"application/json"}
&&&&#zabbix&server的url地址
&&&&url&=&zbx_url
&&&&#构建请求的json数据
&&&&data='''{
&&&&"jsonrpc":&"2.0",
&&&&"method":&"%s",
&&&&"params":&%s,
&&&&"auth":&"%s",
&&&&"id":&1&}'''&%&(zbx_action,&zbx_params,&zbx_token)
&&&&request&=&urllib2.Request(url,&data)
&&&&for&key&in&header:
&&&&&&&&request.add_header(key,&header[key])
&&&&#&请求zabbix获取返回结果
&&&&&&&&result&=&urllib2.urlopen(request)
&&&&except&urllib2.URLError&as&e:
&&&&&&&&print&"request&Failed:",&e.code
&&&&&&&&#因为各种应用场景结果可能不通做了如下判断
&&&&&&&&#如果返回的json里面有error这个key代表请求失败,输出错误信息并返回False
&&&&&&&&#如果返回json没有result这个key代表结果也不是预期
&&&&&&&&#其它的直接返回json的result&key的内容
&&&&&&&&response&=&json.loads(result.read())
&&&&&&&&if&'error'&in&response:
&&&&&&&&&&&&print&response['error']
&&&&&&&&&&&&return&False
&&&&&&&&elif&not&response['result']:
&&&&&&&&&&&&print&response
&&&&&&&&&&&&return&False
&&&&&&&&else:
&&&&&&&&&&&&return&response['result']
&&&&&&&&result.close()
#方法创建好了,这里把参数传入调用下下就好
zbx_token&=&get_zbx_token()
zbx_action&=&'host.get'
zbx_params&=&'''{
&&&&"output":&"extend",
&&&&"filter":&{
&&&&"name":&["Zabbix&server"]
print&zbx_req(zbx_action,zbx_params,zbx_token)脚本写执行下脚本试试把[root@salt-node1&tmp]#&python&zabbix.py&
[{u'available':&u'1',&u'tls_connect':&u'1',&u'maintenance_type':&u'0',&u'ipmi_errors_from':&u'0',&u'ipmi_username':&u'',&u'snmp_disable_until':&u'0',&u'ipmi_authtype':&u'-1',&u'ipmi_disable_until':&u'0',&u'lastaccess':&u'0',&u'snmp_error':&u'',&u'tls_psk':&u'',&u'ipmi_privilege':&u'2',&u'jmx_error':&u'',&u'jmx_available':&u'0',&u'maintenanceid':&u'0',&u'snmp_available':&u'0',&u'tls_psk_identity':&u'',&u'status':&u'0',&u'description':&u'',&u'tls_accept':&u'1',&u'host':&u'Zabbix&server',&u'disable_until':&u'0',&u'ipmi_password':&u'',&u'templateid':&u'0',&u'tls_issuer':&u'',&u'ipmi_available':&u'0',&u'maintenance_status':&u'0',&u'snmp_errors_from':&u'0',&u'ipmi_error':&u'',&u'proxy_hostid':&u'0',&u'hostid':&u'10084',&u'name':&u'Zabbix&server',&u'jmx_errors_from':&u'0',&u'jmx_disable_until':&u'0',&u'flags':&u'0',&u'error':&u'',&u'maintenance_from':&u'0',&u'tls_subject':&u'',&u'errors_from':&u'0'}]拓展1相信大家学到这里还不满足,懒是永无止境的,我根据自己情况继续把用法继续封装,根据自己的需求封装一个创建主机的方法class&Zbx_api(object):
&&&&def&zbx_create_host(self,hostname,inter_ip,group_id,temlpate_id):
&&&&&&&&self.hostname&=&hostname
&&&&&&&&self.inter_ip&=&inter_ip
&&&&&&&&self.group_id&=&group_id
&&&&&&&&self.temlpate_id&=&temlpate_id
&&&&&&&&'''创建主机
&&&&&&&&&&&&hostname&:主机名
&&&&&&&&&&&&inter_ip&:主机IP
&&&&&&&&&&&&gourp_id&:组id
&&&&&&&&&&&&template_id&:&监控模版id
&&&&&&&&&&&&zbx_create_host('salt-node1','192.168.198.116','4','10001')
&&&&&&&&'''
&&&&&&&&zbx_action&=&'host.create'
&&&&&&&&zbx_params&=&'''{
&&&&&&&&&&&&"host":&"%s",
&&&&&&&&&&&&"interfaces":&[
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&"type":&1,
&&&&&&&&&&&&&&&&&&&&"main":&1,
&&&&&&&&&&&&&&&&&&&&"useip":&1,
&&&&&&&&&&&&&&&&&&&&"ip":&"%s",
&&&&&&&&&&&&&&&&&&&&"dns":&"",
&&&&&&&&&&&&&&&&&&&&"port":&"10050"
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&],
&&&&&&&&&&&&"groups":&[
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&"groupid":&"%s"
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&],
&&&&&&&&&&&&"templates":&[
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&"templateid":&"%s"
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&],
&&&&&&&&&&&&"inventory_mode":&0,
&&&&&&&&&&&&"inventory":&{
&&&&&&&&&&&&&&&&"macaddress_a":&"nginxs.net",
&&&&&&&&&&&&&&&&"macaddress_b":&"nginxs.net"
&&&&&&&&&&&&}
&&&&&&&&}'''&%&(hostname,inter_ip,group_id,temlpate_id)
&&&&&&&&r=Zbx_base_api(zbx_action,zbx_params)
&&&&&&&&return&r.zbx_req()拓展2例如我经常需要把一个group的主机的eth0网卡和CPU负载创建一个screen那我们得用python完成下面几项操作:1. 创建一个方法获取一个主机组的指定graph id2. 创建一个方法只要传入screen name,graph id就可以创建一个screen&&&&def&zbx_create_screen(self,screen_name,screen_high,screen_width):
&&&&&&&&'''创建screen
&&&&&&&&name&:&SCREEN的名字
&&&&&&&&hsize:&screen的行数
&&&&&&&&vsize:&screen的列数
&&&&&&&&screenitems:&screen里面的item
&&&&&&&&&&&&resourcetype&:&当前数据源的类型"graph","map","url"更多请看传送门/documentation/2.4/manual/api/reference/screenitem/object#screen_item
&&&&&&&&&&&&resourceid:&itemid
&&&&&&&&&&&&rowspan:&占据行数
&&&&&&&&&&&&colspan:占据列数
&&&&&&&&&&&&x:&屏幕x坐标轴位置
&&&&&&&&&&&&y:&&屏幕y坐标轴位置
&&&&&&&&&'''
&&&&&&&&self.screen_name&=&screen_name
&&&&&&&&self.screen_high&=&screen_high
&&&&&&&&self.screen_width&=&screen_width
&&&&&&&&zbx_action&=&'screen.create'
&&&&&&&&zbx_params&=&'''{
&&&&&&&&"name":&"%s",
&&&&&&&&"hsize":&%s,
&&&&&&&&"vsize":&%s,
&&&&&&&&"screenitems":&[
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&"resourcetype":&0,
&&&&&&&&&&&&&&&&"resourceid":&"524",
&&&&&&&&&&&&&&&&"rowspan":&1,
&&&&&&&&&&&&&&&&"colspan":&1,
&&&&&&&&&&&&&&&&"x":&0,
&&&&&&&&&&&&&&&&"y":&2
&&&&&&&&&&&&}
&&&&}'''&%&(self.screen_name,self.screen_high,self.screen_width)
&&&&&&&&print&&&zbx_params
&&&&&&&&r=Zbx_base_api(zbx_action,zbx_params)
&&&&&&&&return&zbx_req()今天不早了先写到这里明天继续本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)查看:555|回复:2
背景:公司有一个语音系统,现在通过脚本获取到语音系统数据库每天的呼入呼出的电话记录并进行统计,然后直接insert到zabbix的数据库单独的一个表里面,即表里面字段有itemid, min,avg,max这些记录。现在应该怎么在zabbix上进行设置让自定义的items能够读取到数据库里面的这些数据?
中级工程师
首先看你的呼叫系统是什么数据库,有两种获取的办法:
1、在语音系统数据库里,通过脚本获取数据库的电话记录字段,生成自定义的SNMP字段,然后zabbix通过SNMP来获取;
2、zabbix通过脚本,直接读取数据库的电话记录字段,然后进行记录,这个脚本模板能找到,但是会造成数据库泄漏,有不安全因素;
自己把握吧,我比较倾向于第一种,略麻烦但是安全,而且可以通过SNMP来获取各种统计数据,防火墙只放行SNMP即可。
引用:原帖由 buildmoon 于
09:21 发表
首先看你的呼叫系统是什么数据库,有两种获取的办法:
1、在语音系统数据库里,通过脚本获取数据库的电话记录字段,生成自定义的SNMP字段,然后zabbix通过SNMP来获取;
2、zabbix通过脚本,直接读取数据库的电话记录字段,然后进行记 ... 语音系统是用sqlserver,目前使用的是类似第二种方法,因为同在一个公司内部,数据泄漏问题应该不大。
而且现在的问题是已经能够从语音系统获取数据并插入到zabbix的数据库里面去了,我的意思是插入到zabbix后,我怎么把这些数据让zabbix Web界面调取到并显示出来资料详情通过python的脚本获取zabbix图片
通过 python 的脚本获取 zabbix 图片#_*_coding:utf-8_*_import sysimport datetimeimport cookielib, urllib2,urllibclass ZabbixGraph(object):
def __init__(self,url,name,password):
self.url=url
self.name=name
self.password=password
#初始化的时候生成 cookies
cookiejar = cookielib.CookieJar()
urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
values = {&name&:self.name,&password&:self.password,&autologin&:1,&enter&:&Sign in&}
data = urllib.urlencode(values)
request = urllib2.Request(url, data)
urlOpener.open(request,timeout=10)
self.urlOpener=urlOpener
except urllib2.HTTPError, e:
def GetGraph(self,url,values,image_dir):
key=values.keys()
if &graphid&
not in key:
print u&请确认是否输入 graphid&
sys.exit(1)
#以下 if 是给定默认值
&period& not in key :
试读已结束,继续阅读请购买后下载
下载1已下载用户的评价7.09分
您还未下载该资料,不能发表评价;
评价已下载资料,获取金币奖励;查看我的 本资料还没有评价。1 金币

我要回帖

更多关于 南阳铁艺制作 的文章

 

随机推荐