日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多线程批量ping服务器

發(fā)布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多线程批量ping服务器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近由于工作的需要寫了個多線程批量ping服務器的腳本,如果服務器down了,自動發(fā)報警郵件(可以添加多收件人)

?

提示:程序網(wǎng)頁顯示可以能有縮進問題。

multithreading_ping_host.py?主程序使用需要一個參數(shù),(參數(shù):服務器IP地址列表)

send_mail.py?發(fā)郵件程序

ip.yml?服務器IP地址列表

[root@nginx1?python]#?cat?/root/python/ip.yml?
192.168.1.1
192.168.1.103
192.168.1.100
www.360kad.com
192.168.1.245

[root@nginx1?python]#?./multithreading_ping_host.py?/root/python/ip.yml?

程序效果:

[root@nginx1?python]#?cat?multithreading_ping_host.py?
#!/usr/bin/python
#?-*-?coding:?gbk?-*-
import?multiprocessing
import?os,sys
import?time

filename=sys.argv[1]

if?filename?==?'':
????sys.exit(0)

result=[]
excution_list=[]

def?ip_address(iplist):
????????hosts=[]
????????IP=[]
????????if?os.path.exists(filename):
????????????????f=file(filename)
????????????????for?line?in?f.readlines():
????????????????????????f_line?=line.strip().split()
????????????????????????hosts.append(f_line)

????????????????for?i?in?range(int(len(hosts))):
????????????????????????IP.append(hosts[i][0])
????????????????return?IP
????????else:
????????????????print?"\033[31mfile:-->%s?not?found\033[0m"?%?(filename)
????????????????sys.exit(1)

hosts=ip_address(filename)

?

for?line?in?hosts:

????????cmd="ping?-c?2?%s?>?/dev/null"?%?line
????????excution_list.append(cmd)


def?run_cmd(cmd):
?????????if?os.system(cmd)?==?0:
?????????????????ip=cmd.split()
?????????????????HOST=ip[3]
?????????????????print??"%s?is:"?%?(HOST)?+?"\033[32m?UP\033[0m"
???????else:
?????????????????ip=cmd.split()
?????????????????HOST=ip[3]
?????????????????print??"%s?is:"?%?(HOST)?+?"\033[31m?DOWN\033[0m"
?????????????????SEN=HOST+':down'
?????????????????os.system('/root/python/send_mail.py?'+SEN?+'?'+?HOST+':服務器down機了')

?????????????????#如果服務器down了調(diào)用send_mail.py發(fā)報警郵件

def?main():
?????????work=multiprocessing.Pool(processes=len(excution_list))
?????????for?task?in?excution_list:
?????????????????result.append(work.apply_async(run_cmd,(task,)))
?????????work.close()

?

?????????for?print_result?in?result:
?????????????????print_result.get()

?

if?__name__?==?'__main__':
?main()

?

[root@nginx1?python]#?cat?send_mail.py?
#!/usr/bin/env?python
#?-*-?coding:?utf8?-*-
import?sys
import?smtplib
from?email.mime.text?import?MIMEText

mailto_list=["624042419@qq.com"]?#可定義多個收件人以頭號隔開。
mail_host="mail.sina.com"
mail_user="*********"
mail_pass="*********"
mail_postfix="sina.com"

SEN=sys.argv[1]
CON=sys.argv[2]

if?SEN?==?'??'?and?CON?==?'??':
????????sys.exit(0)

def?send_mail(to_list,sub,content):
????????????me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
????????????msg?=?MIMEText(content)
????????????msg['Subject']?=?sub
????????????msg['From']?=?me
????????????msg['To']?=?";".join(to_list)
????????????try:
????????????????????s?=?smtplib.SMTP()
????????????????????s.connect(mail_host)
????????????????????s.login(mail_user,mail_pass)
????????????????????s.sendmail(me,?to_list,?msg.as_string())
????????????????????s.close()
????????????????????return?True
????????????except?Exception,?e:
????????????????????print?str(e)
????????????????????return?False


if?__name__?==?'__main__':

????????if?send_mail(mailto_list,SEN,CON):

????????????????print?"\033[32m郵件通知成功..\033[0m"
????????else:

????????????????print?"\033[31m郵件通知失敗..\033[0m"

?

---------------------------------------------------------------------------------------------

?

?

?

?

?

?

轉(zhuǎn)載于:https://blog.51cto.com/xieqn/1258926

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的多线程批量ping服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。