更多程式設計教程請到:菜鳥教程
高州陽光論壇
人人影視
在日常的工作中,我們通常會有去探測目標主機是否存活的應用場景,單個的伺服器主機可以通過計算機自帶的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 subprocessimport 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...