月度归档:2011年06月

python解析xml

 

import xml.parsers.expat

level = 0

def start_element(name, attrs):
     global level
     print ‘ ‘ * level, ‘Start element:’, name, attrs
     level = level + 1

def end_element(name):
     global level
     level = level – 1
     print ‘ ‘ * level, ‘End element:’, name

def char_data(data):
     if(data == ‘n’):
       return
     if(data.isspace()):
       return
     global level
     print ‘ ‘ * level, ‘Character data:’, data

if __name__ == "__main__":
     p = xml.parsers.expat.ParserCreate()
     p.StartElementHandler = start_element
     p.EndElementHandler = end_element
     p.CharacterDataHandler = char_data
     p.returns_unicode = False

     f = file(‘sample.xml’)
     p.ParseFile(f)
     f.close()

———————————————————————————-

提取struts中配置的action:

import xml.parsers.expat

level = 0
pkg = ”
def start_element(name, attrs):
     global level
     global pkg
     if(name == ‘package’):
        pkg = attrs[‘namespace’]
     if(name == ‘action’):
        print pkg + "/" + attrs[‘name’] + ".action"
     #level = level + 1

def end_element(name):
    print ”

def char_data(data):
     if(data == ‘n’):
       return
     if(data.isspace()):
       return
     global level
     print ‘ ‘

if __name__ == "__main__":
     p = xml.parsers.expat.ParserCreate()
     p.StartElementHandler = start_element
     p.EndElementHandler = end_element
     p.CharacterDataHandler = char_data
     p.returns_unicode = False

     f = file(‘sample.xml’)
     p.ParseFile(f)
     f.close()

linux路由配置

       场景描述:服务器一般有两块网卡,一个连接外网,一个连接内网。在linux系统下,通常会用eth0, eth1来标识。在redhat系列下,IP配置文件一般在 /etc/sysconfig/network-scripts/ifcfg-eth0和 /etc/sysconfig/network-scripts/ifcfg-eth1 里面。格式类似于下面:

# Intel Corporation 82576 Gigabit Network Connection
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:26:55:23:23:E7
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.224
IPADDR=132.77.127.75
GATEWAY=132.77.127.65
USERCTL=no
IPV6INIT=no
PEERDNS=yes
 

现在我们问题来了,由于两块网卡eth0和eth1都配置了网关,当后一个网卡激活后,默认网关就会变成后一个网卡的网关,这样会导致内网、外网数据都走这个网关,从而引起网络出现问题。为了解决内网、外网都可以访问,我们需要通过路由来对数据分流。让外网的数据走外网网卡的网关,内网的走内网的网关。比如,内网网卡为eth1, 我们希望访问132.77.127.12时走网关132.77.127.65, 那么我们可以在  /etc/sysconfig/network-scripts/下创建文件 route-eth1, 

格式:

       <ADDRESS>/<MASK BITS> via <GATEWAY> dev <eth#>

内容为:

            132.77.127.12/32 via 132.77.127.65 dev eth1

其中32表示32位的子网掩码。

表示到 访问132.77.127.12 时走网关 132.77.127.65 

       然后在终端下执行:

                                    ifdown eth1

                                    ifup eth1

  这时在执行:

                              route

就可以看到路由表信息里面两个网关都有了。内网、外网通讯会分别走内网网关和外网网关。