01
—
背景介绍
近期,公司在进行一次大规模的机房搬迁,各项业务系统需要迁移到一个全新的基础设施环境,中间涉及到多套组件,尤其是众多的服务器及其承载的各类应用端口,由于时间紧迫,新环境还未搭建监控平台,如何确保在迁移之后所有的服务端口仍能正常开启并对外提供服务,成为了当前运维团队面临的问题。
在传统的人工逐一检查方式下,面对数量庞大的服务器和种类繁多的应用端口,不仅费时费力,而且容易出现遗漏和误差,为了快速解决此问题,我们采用通过python对业务端口进行批量自动化检查。
02
—
实现过程
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import socket,sys,re
def connect(ip, port):
"""
判断指定IP和端口是否存活
"""
clinet_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clinet_sock.settimeout(2)
result = clinet_sock.connect_ex((ip,port))
if result == 0:
return 'Up'
else:
return "Down"
clinet_sock.close()
def main_from_file(input_file, output_file):
"""
从文件读取IP和端口进行批量检测
"""
with open(input_file, 'r') as in_f, open(output_file, 'w') as out_f:
for line in in_f.readlines():
result = re.split(r's+', line.strip())
try:
alive = connect(result[0], int(result[1]))
except:
result_line = "Format error.n"
else:
result_line = "{0}t{1}t{2}n".format(result[0],int(result[1]),alive)
print("{0}t{1}t{2}".format(result[0],int(result[1]),alive))
out_f.write(result_line)
def main_single_ip(ip, port):
"""
单独检测一个IP和端口是否存活
"""
alive = connect(ip, port)
print("{0}t{1}t{2}n".format(ip,port,alive))
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Check ports.')
file_group = parser.add_argument_group('File input IP port information')
file_group.add_argument('-f', '--file', dest='input_file', type=str, help='The path to the input file containing IP addresses and ports.')
ip_port_group = parser.add_argument_group('Single IP and Port Options')
ip_port_group.add_argument('-i', '--ip', dest='ip', type=str, help='An IP address to check.')
ip_port_group.add_argument('-p', '--port', dest='port', type=int, required=False, help='The port number to check when using -i/--ip option. This option is mandatory when using -i/--ip.')
args = parser.parse_args()
if args.input_file:
main_from_file(args.input_file, "output.txt")
elif args.ip and args.port:
main_single_ip(args.ip, args.port)
else:
parser.print_help()
exit(1)

单个形式检测
# python check_port.py -i 192.168.2.43 -p 8080
文本的形式检测
# cat ipportinfo.txt
192.168.2.2 22
192.168.2.10 80
# python check_port.py -f ipportinfo.txt
代码获取:后台回复端口检测
代码获取:后台回复端口检测
代码获取:后台回复端口检测
MUSIC

♬..♩~ ♫. ♪..
END

一键启动!利用Python轻松构建HTTP服务器
超实用!利用Nginx实现文件下载,效率翻倍
高效部署!使用Docker Compose快速搭建Harbor私有镜像仓库
原文始发于微信公众号(Linux运维之旅):太强了!利用python批量巡检服务状态
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/273763.html