1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<code># vim: tabstop=4 shiftwidth=4 softtabstop=4</code>
<code># Copyright 2010 United States Government as represented by the</code>
<code># Administrator of the National Aeronautics and Space Administration.</code>
<code># Copyright 2011 Justin Santa Barbara</code>
<code># All Rights Reserved.</code>
<code># Copyright (c) 2010 Citrix Systems, Inc.</code>
<code>#</code>
<code># Licensed under the Apache License, Version 2.0 (the "License"); you may</code>
<code># not use this file except in compliance with the License. You may obtain</code>
<code># a copy of the License at</code>
<code># http://www.apache.org/licenses/LICENSE-2.0</code>
<code># Unless required by applicable law or agreed to in writing, software</code>
<code># distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</code>
<code># WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the</code>
<code># License for the specific language governing permissions and limitations</code>
<code># under the License.</code>
<code>import</code> <code>os,sys,time,commands,shutil,re,traceback</code>
<code>from</code> <code>kxtools </code><code>import</code> <code>config</code>
<code>from</code> <code>kxtools </code><code>import</code> <code>log</code>
<code>LOG </code><code>=</code> <code>log.get_logger(__name__)</code>
<code>cfg </code><code>=</code> <code>config</code>
<code>def</code> <code>COMM(cmd):</code>
<code> </code><code># Call system commands</code>
<code> </code><code>try</code><code>:</code>
<code> </code><code>x,y </code><code>=</code> <code>commands.getstatusoutput(cmd)</code>
<code> </code><code>if</code> <code>x </code><code>=</code><code>=</code> <code>0</code><code>:</code>
<code> </code><code>return</code> <code>y</code>
<code> </code><code>return</code> <code>y</code>
<code> </code><code>except</code><code>:</code>
<code> </code><code>LOG.error(traceback.format_exc())</code>
<code>def</code> <code>iptablesRestore():</code>
<code> </code><code># Effective firewall</code>
<code> </code><code>os.system(</code><code>"/sbin/iptables-restore /etc/sysconfig/iptables"</code><code>)</code>
<code>def</code> <code>removes(sfile,dfile):</code>
<code> </code><code># removes files</code>
<code> </code><code>shutil.copy(sfile,dfile)</code>
<code> </code><code>LOG.info(</code><code>'Copy %s is ok'</code><code>%</code><code>sfile)</code>
<code> </code><code>return</code> <code>'False'</code>
<code>def</code> <code>add_filrewall(zones,ips):</code>
<code> </code><code>CONF</code><code>=</code><code>cfg.load_cfg()[</code><code>'iptables'</code><code>]</code>
<code> </code><code>if</code> <code>zones !</code><code>=</code> <code>'TW'</code><code>:</code>
<code> </code><code>sfile </code><code>=</code> <code>CONF[</code><code>'file'</code><code>]</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>sfile </code><code>=</code> <code>CONF[</code><code>'fw_file'</code><code>]</code>
<code> </code><code>for</code> <code>i </code><code>in</code> <code>[</code><code>'161'</code><code>,</code><code>'5666'</code><code>]:</code>
<code> </code><code>_insertFirewall(ips,zones,sfile,i)</code>
<code>def</code> <code>_insertFirewall(ips,zones,sfile,ports):</code>
<code> </code><code>f </code><code>=</code> <code>open</code><code>(sfile).readlines()</code>
<code> </code><code>for</code> <code>ip </code><code>in</code> <code>ips:</code>
<code> </code><code>for</code> <code>n,s </code><code>in</code> <code>enumerate</code><code>(f):</code>
<code> </code><code>if</code> <code>re.search(ip,s) </code><code>and</code> <code>re.search(ports,s):</code>
<code> </code><code>break</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>if</code> <code>re.search(</code><code>'--dport 9090'</code><code>,s):</code>
<code> </code><code>mes </code><code>=</code> <code>s.split(</code><code>' '</code><code>)</code>
<code> </code><code>a </code><code>=</code> <code>n</code>
<code> </code><code>role </code><code>=</code> <code>"%s %s -s %s -m state --state NEW -m tcp -p tcp --dport %s -j ACCEPT \n"</code> <code>\</code>
<code> </code><code>%</code><code>(mes[</code><code>0</code><code>],mes[</code><code>1</code><code>],ip,ports)</code>
<code> </code><code>f.insert(a,role)</code>
<code> </code><code>break</code>
<code> </code><code>fp </code><code>=</code> <code>open</code><code>(sfile,</code><code>'w'</code><code>)</code>
<code> </code><code>fp.writelines(f)</code>
<code> </code><code>fp.close()</code>
<code> </code><code>iptablesRestore()</code>
<code> </code><code>LOG.info(</code><code>" %s zone zabbix firewall is oK "</code><code>%</code><code>zones)</code>
本文转自 swq499809608 51CTO博客,原文链接:http://blog.51cto.com/swq499809608/1401329