Python检查远程服务和端口的方法

使用Python脚本,检测远程服务和端口是否连通,可以用如下代码片断实现

#!/usr/bin/python
# _*_ coding: UTF-8 _*_

import socket
import threading
import time

#服务和端口放在list中
service = ['mixcztdb.erp3.crland.com.cn 1526', 'ztcommon.crland.cn 8081',
           'ztshop.crland.cn 80', 'opera.crland.com.cn 80',
           'opera.crland.cn 80', 'invest.saas.crland.com.cn 80',
           'zt_rediscol1.erp3.crland.com.cn 7001', 'zt_rediscol1.erp3.crland.com.cn 7002',
           'zt_rediscol2.erp3.crland.com.cn 7001', 'zt_rediscol2.erp3.crland.com.cn 7002',
           'zt_rediscol3.erp3.crland.com.cn 7001', 'zt_rediscol3.erp3.crland.com.cn 7002']

'''
用socket连接
'''
def socketconnect(addr, port):
    try:
        sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sk.settimeout(2)
        sk.connect((addr, int(port)))
        # print 'connect to ' + addr + ' ' + port + ' success'
    except socket.error, e:
        print 'connect to ' + addr + ' ' + port + ' timed out'
    sk.close()


'''
取service中的地址和端口
'''
def check():
    for every in service:
        addr = every.split()
        socketconnect(addr[0], addr[1])

'''
main方法
'''

if __name__ == '__main__':
    threads = [threading.Thread(target=check())]
    map(lambda x: x.start(), threads)

运行结果,输出了不通的服务地址信息

connect to mixcztdb.erp3.crland.com.cn 1526 timed out
connect to zt_rediscol1.erp3.crland.com.cn 7001 timed out
 

猜你喜欢

转载自blog.csdn.net/zhigang0529/article/details/85089196