这是一篇批量检测ip方法的文章记录,主要介绍了如何使用python来简单快速的输出批量telnet检测ip是否正常结果
检测ip是否正常是一个常见的需要,刚好我在做浏览器自动代理遇到需要检测ip是否可用的场景,见我的这篇文章chrome使用代理,浏览器PAC自动配置代理Javascript脚本介绍及使用/PAC文件
这里来写一下记录解决过程
检测ip方法
ping检测ip
ping是常用来检测ip是否可通的一个命令,使用格式是 ping ip
telnet检测ip端口
telnet如果命令执行成功也可以认为ip是可用的,使用格式是telnet [ip port]
批量检测ip
ping和telnet都只能一次检测一个ip是否可用,刚好我手里有几十个做浏览器代理的ip,一个个来检测太麻烦了,我用Python来实现一个批量检测ip脚本,脚本的功能就是把telnet成功运行成功的ip输出结果出来就行了,说干就干
代码也很简单,三个环节遍历、检测、打印结果,如下是代码:
'''
python版批量检测ip是否可用
'''
#!/usr/bin/env python
#-*-coding:utf-8-*-
import re
import subprocess
from io import StringIO
import multiprocessing
import time
import sys
import telnetlib
#telnet检测直接打印结果
def telnet(host, port):
"""
测试端口号通不通
:return:
"""
try:
# timeout单位s
telnetlib.Telnet(host=host, port=port, timeout=2)
print(f"{host}:{port} 端口开放")
except:
print(f"{host}:{port} 端口未开放")
# 或什么都不打印
# pass
#ping检测将结果存储在文件
def check_alive(ip):
result = subprocess.call('ping -w 1000 -n 1 %s' %ip,stdout=subprocess.PIPE,shell=True)
if result == 0:
h = subprocess.getoutput('ping ' + ip)
returnnum = h.split('平均 = ')[1]
info = ('\033[32m%s\033[0m 能ping通,延迟平均值为:%s' %(ip,returnnum))
print(info)
#return info
else:
with open('failping.txt','a') as f:
f.write(ip)
info = ('\033[31m%s\033[0m ping 不通!' % ip)
#return info
print(info)
if __name__ == '__main__':
print("开始批量ping所有IP!")
#读取文件
#with open('ip.txt', 'r') as f: #ip.txt为本地文件记录所有需要检测连通性的ip
f=["127.0.0.1",
"127.0.0.1"
"127.0.0.1"
"127.0.0.1"
"127.0.0.1"
"127.0.0.1"
"127.0.0.1"]
for str in f:
item=str.split(':');
i=item[0]
port=8080
if len(item)>1:
port=item[1]
p = multiprocessing.Process(target=telnet, args=(i,port))
p.start()
request模块检测ip
用request模块检测ip也可以,但要有运行环境,代码如下:
'''
python版检测代理ip是否可以访问网站
'''
# python 3.6+
#!/usr/bin/env python
#-*-coding:utf-8-*-
import requests
url = "http://www.baidu.com/"
ip, port = "127.0.0.1", "8080"
proxies = {"http": f"http://{ip}:{port}"}
#空白位置为测试代理ip和代理ip使用端口
headers = {"User-Agent": "Mozilla/5.0"}
#响应头
res = requests.get(url, proxies=proxies, headers=headers)
#发起请求
print(ip+port+"="+res.status_code) #返回响应码
Python中运行No module named ‘requests‘问题怎么办
通过pip安装python模块requests下载和安装
总结
python检测ip整个过程简单,如果已安装python的直接运行就完事了,不然就要装一下python环境