使用Python實現批量ping操作方法

2021-10-13 05:23:57 字數 2812 閱讀 4847

更多程式設計教程請到:菜鳥教程

高州陽光論壇

人人影視

在日常的工作中,我們通常會有去探測目標主機是否存活的應用場景,單個的伺服器主機可以通過計算機自帶的dos命令來執行,但是業務的存在往往不是單個存在的,通常都是需要去探測c段的主機(同乙個網段下的存活主機),這樣使用dos來進行操作是不可取,探測的速度太慢了,不滿足實際需要。一般批量的操作需要使用指令碼進行一鍵部署執行,本文主要通過使用python語言來實現批量ping的操作(使用多執行緒實現python批量處理)

python版本 :python3

使用的第三方庫:subprocess, logging, threading, queue

日誌匯出模組功能:

def set_logging_format():

logging.basicconfig(level=logging.info,

format='%(message)s',

filename='ping_host.log',

filemode='w'

)console = logging.streamhandler()

console.setlevel(logging.info)

formatter = logging.formatter('%(message)s')

console.setformatter(formatter)

logging.getlogger('').addhandler(console)

多執行緒實現批量操作:

threads =

thread_num = 20

user_iput = input('please input modren: ')

if user_iput == 'addr':

ip_l = ip_list

if user_iput == 'file':

ip_l = ip_queue

for i in range (thread_num):

t = threading.thread(target = ping_ip,args = (ip_l,))

for i in range (thread_num):

threads[i].start()

for i in range (thread_num):

threads[i].join()

完整**部分:

import subprocess

import logging

import datetime

import time

import threading

from queue import queue

import sys

# 實現日誌匯出

def set_logging_format():

logging.basicconfig(level=logging.info,

format='%(message)s',

filename='ping_host.log',

filemode='w'

)console = logging.streamhandler()

console.setlevel(logging.info)

formatter = logging.formatter('%(message)s')

console.setformatter(formatter)

logging.getlogger('').addhandler(console)

# 將需要ping 連線的ip加入佇列

def insert_ip_queue(ip_list_path):

ip_queue = queue()

with open (ip_list_path,'r') as f:

for ip in f.readlines():

ip_queue.put(ip)

f.close()

return ip_queue

def ip_list ():

ip_list = queue()

for i in range (1,255):

ip = '192.168.1.' + str(i)

ip_list.put(ip)

return ip_list

# print (ip_list())

#print (ip_list())

#定義 ping 函式

def ping_ip (ip_queue):

while not ip_queue.empty():

ip = ip_queue.get().strip('\n')

#print (ip)

res = subprocess.call('ping -w 1000 -n 1 %s' % ip , stdout=subprocess.pipe,shell=true)

#print (res)

if res == 0:

h =subprocess.getoutput('ping' + ' ' + ip)

#print (h)if 'ttl=' in h:

res = ('網路可以正常連通平均延時 = %s' % h.split('平均 = ')[1])

else:

res = '網路連線失敗!'

today = datetime.datetime.now().strftime("%y - %m - %d %h : %m : %s")

logging.info("%s ip = %s %s" % (today,ip,res))

使用Python實現Linux命令的批量執行

prodigal用於 原核生物cds,平常會用來 核苷酸序列的cds並且翻譯成氨基酸序列,但是需要一條一條的執行,量大的話很麻煩,需要一直修改命令。該軟體使用時的命令格式為 prodigal i your inputpath 1234 genomic.fasta g 11 a your output...

Python 基於Python實現批量建立目錄

基於python實現批量建立目錄 by 授客qq 1033553122 測試環境 python 版本 python 2.7 實踐 usr bin env python coding utf 8 author shouke import os class publictools def init se...

用python實現批量複製

使用shutil實現簡單的檔案批量複製 src dir為複製檔案的原始檔,就是從 複製,target dir 是目標檔案,就是要複製到哪 shutil.copy src dir,target dir 完整 import os import shutil 呼叫複製檔案函式 defcopy2file s...