易度->OA 实现工作流消息提醒
import urllib2
u=CONTEXT.MD["zhihui"]
for a in u:
try:
url="网页链接"
url=url+"?user="+ a[6:]
s = urllib2.urlopen(url).read()
except urllib2.HTTPError,e:
print e.code
自从把我们的一款控制器改成WiFi无线输入输出控制模块,与客户的生产系统配套,用于自动化生产,
基本上天天提心吊胆,生怕接到客户的反馈问题,一旦反馈问题都是影响生产甚至损坏生产设备的大问题,都会造成用户的很不愉快,而我们可能需要配合用户通宵达旦分析并解决问题。
问题在于,我们的设备使用了不少外购的配件,在客户严格控制成本的前提下,即使不计成本以保证产品可靠性,也很难保证外购的配件不出问题。
况且还跟用户的配置、使用有很大关系。
前一段时间,就协助客户处理了IP冲突、DHCP地址池与固定IP地址段冲突,甚至上位机的socket超时时间设置不合理等导致系统不能正常的问题,据说这个例子的用户非常不满意...
当这样的情况下,当客户再一次反馈又有一台设备断线,很长时间连接不上,导致产线停止运行...,换作是你们,你们会不会脑瓜子嗡嗡的,颤抖着双手远程连接客户的电脑协助查找问题。
打开wireshark抓包,看到满屏黑色的错误数据帧,在上位机软件作为TCP客户端向服务端发送请求之后,又立即向服务器发送了TCP ZeroWindow的报文,告诉服务端接收缓存满,不能接收数据。
看来是客户自己开发的上位机软件存在问题,找客户要来上位机代码之后,发现了其中的问题:
if(in_list ==NULL){
socket.Send("http://192.168.10.108/get.cgi?t=all")
}
在这一条代码中,上位机软件通过socket向服务端发送了http请求,此时服务端会返回http影应并放在接收缓存。
但是上位机并没有通过socket.Receive从缓存取数据进行处理,从而导致接收缓存被占满,出现了ZeroWindow的通信错误,并最终导致了服务端的TCP通信受影响,出现断线故障。
Nginx如何限制ip访问?
在一个请求闯过之前的postread阶段,rewrite阶段,find_config阶段,preaccess阶段后终于来到了Access阶段了。
Access阶段主要就是控制请求是否可以继续向下访问的。
在这个阶段第一个要经过的就是Access模块。
想对IP 进行访问控制?可以在Access模块 控制哪些IP可以访问一些URL,哪些IP不可以访问一些URL。
生效阶段:NGX_HTTP_ACCESS_PHASE阶段
模块:http_access_module
默认编译进Nginx的。如果不想编译进Nginx,可以通过
--without-http_access_module来禁用该模块。
生效范围:进入access阶段前不生效。也就是说虽然你限制了某ip的访问,但是前面的limit_conn,limit_req还是会生效的。
语法: allow $ip | CIDR | unix:|all;
上下文:HTTP,server,location,limit_except
语法: deny $ip | CIDR | unix:|all;
上下文:HTTP,server,location,limit_except
示例:
location / {
deny 192.168.1.1; // 拒绝某个ip的访问
allow 网页链接; // 允许一段地址的访问
allow 2001:0db8::/32; // 还可以跟IPv6的格式
deny all; // 拒绝所有
}
需要注意的是 这几条里是顺序执行的,当满足到其中一条就会break了。
access模块是一种非常简单的控制用户访问的一种方法。
对于我们控制一些服务的访问却是非常有用的。
你学废了吗?