最近在https://pypi.python.org/pypi/mping/0.1.2找到了一个python包,可以用它来批量ping服务器,它是中国的大神写的,支持单个服务器、将服务器IP写在txt或json里都可以。
这里我改了几个字,方便我这种英文不好的同学使用
mping.py
#!/usr/bin/env python3 # coding: utf-8 import argparse import ctypes import json import os import random import re import select import socket import struct import sys import threading import time if sys.platform.startswith('win32'): clock = time.clock run_as_root = ctypes.windll.shell32.IsUserAnAdmin() != 0 else: clock = time.time run_as_root = os.getuid() == 0 DEFAULT_DURATION = 3 EXIT_CODE_BY_USER = 1 EXIT_CODE_DNS_ERR = 2 EXIT_CODE_IO_ERR = 3 # Credit: https://gist.github.com/pyos/10980172 def chk(data): x = sum(x << 8 if i % 2 else x for i, x in enumerate(data)) & 0xFFFFFFFF x = (x >> 16) + (x & 0xFFFF) x = (x >> 16) + (x & 0xFFFF) return struct.pack('<H', ~x & 0xFFFF) # From the same gist commented above, with minor modified. def ping(addr, timeout=1, udp=not run_as_root, number=1, data=b''): with socket.socket(socket.AF_INET, socket.SOCK_DGRAM if udp else socket.SOCK_RAW, socket.IPPROTO_ICMP) as conn: payload = struct.pack('!HH', random.randrange(0, 65536), number) + data conn.connect((addr, 80)) conn.sendall(b'x08