python實現批量監控網站

來源:本網整理

1.用Python封裝被測試接口,對于HTTP接口我們通常會采用 GET和POST 2種調用方式去訪問,所以必須把這2種方式都封裝進去#-*-coding:gb2312-*-import urllib2,urllib ''' 函數說明:url 特殊字符編碼轉換 作者:xiaonan 輸入參數:待轉換的字www.anxorj.tw防采集請勿采集本網。

s">

python實現批量監控網站

作者:mindg 字體:[增加 減小] 類型:轉載 時間:2016-09-09 我要評論 本文給大家分享的是一個非常實用的,python實現多網站的可用性監控的腳本,并附上核心點解釋,有相同需求的小伙伴可以參考下 ">

最近又新上了一部分站點,隨著站點的增多,管理復雜性也上來了,俗話說:人多了不好帶,我發現站點多了也不好管,因為這些站點里有重要的也有不重要的,重要核心的站點當然就管理的多一些,像一些萬年都不出一次問題的,慢慢就被自己都淡忘了,冷不丁那天出個問題,還的手忙腳亂的去緊急處理,所以規范的去管理這些站點是很有必要的,今天我們就做第一步,不管大站小站,先統一把監控做起來,先不說業務情況,最起碼那個站點不能訪問了,要第一時間報出來,別等著業務方給你反饋,就顯得我們不夠專業了,那接下來我們看看如果用python實現多網站的可用性監控,腳本如下:

可以,但難易程度取決于在下面哪個階段獲取這個數據 客戶端軟件->客戶端網卡->路由->(網絡)->服務器網卡->http server-->解析程序-> 在最后一個箭頭后是最簡單的,相當于一個API接口 在網卡相鄰

#!/usr/bin/env python import pickle, os, sys, loggingfrom httplib import HTTPConnection, socketfrom smtplib import SMTP def email_alert(message, status): fromaddr = '[email protected]' toaddrs = '[email protected]' server = SMTP('smtp.163.com:25') server.starttls() server.login('xxxxx', 'xxxx') server.sendmail(fromaddr, toaddrs, 'Subject: %s\r\n%s' % (status, message)) server.quit() def get_site_status(url): response = get_response(url) try: if getattr(response, 'status') == 200: return 'up' except AttributeError: pass return 'down' def get_response(url): try: conn = HTTPConnection(url) conn.request('HEAD', '/') return conn.getresponse() except socket.error: return None except: logging.error('Bad URL:', url) exit(1) def get_headers(url): response = get_response(url) try: return getattr(response, 'getheaders')() except AttributeError: return 'Headers unavailable' def compare_site_status(prev_results): def is_status_changed(url): status = get_site_status(url) friendly_status = '%s is %s' % (url, status) print friendly_status if urlin prev_resultsand prev_results[url] != status: logging.warning(status) email_alert(str(get_headers(url)), friendly_status) prev_results[url] = status return is_status_changed def is_internet_reachable(): if get_site_status('www.baidu.com') == 'down' and get_site_status('www.sohu.com') == 'down': return False return True def load_old_results(file_path): pickledata = {} if os.path.isfile(file_path): picklefile = open(file_path, 'rb') pickledata = pickle.load(picklefile) picklefile.close() return pickledata def store_results(file_path, data): output = open(file_path, 'wb') pickle.dump(data, output) output.close() def main(urls): logging.basicConfig(level=logging.WARNING, filename='checksites.log', format='%(asctime)s %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S') pickle_file = 'data.pkl' pickledata = load_old_results(pickle_file) print pickledata if is_internet_reachable(): status_checker = compare_site_status(pickledata) map(status_checker, urls) else: logging.error('Either the world ended or we are not connected to the net.') store_results(pickle_file, pickledata) if __name__ == '__main__': main(sys.argv[1:])

如果只是獲取標簽應該很簡單吧。一種是先爬取,后去重,把標簽按照網站,影片名存儲,然后挨個提取。另一種是爬取中去重,這樣就是有順序的爬取網站,如果同一個影片,有相同的標簽就不存儲。好

腳本核心點解釋:

可以shodan,zoomeye之類的去搜索或者調用API批量獲取,關鍵詞“Hikvision-Webs”,關于其他的關鍵詞可以自行挖掘…也可以進行端口掃描使用nmap或者s掃描器之內的 通過shodan我發現大多數設備開發了80 81

1、getattr()是python的內置函數,接收一個對象,可以根據對象屬性返回對象的值。

通過shodan我發現大多數設備開發了80 81 8080 82 之內的端口,那么你就可以使用端口掃描工具掃描這些端口 接下來咱們要登陸并且獲取登陸信息用于后面的python。我隨便打開了一個。試試弱口令

2、compare_site_status()函數是返回的是一個內部定義的函數。

知道大概怎么解決,但具體的不熟練,建議如果沒有人給現成的代碼,那就自己研究一下吧。第五行最后一個app,中國。大學。慕。課,里面搜索爬蟲,學它一兩個小時,就知道這個批量查詢成績該怎么做

3、map(),需要2個參數,一個是函數,一個是序列,功能就是將序列中的每個元素應用函數方法。

帶界面的工具 1、MySQL可視化工具 這些工具都可以免費使用:a、MySQL查詢瀏覽器(MySQL Query Browser):這個不用說了…b、MySQL管理員(MySQL Administrator):功能集中在服務器管理上,所以它最適合DBA使用,內容來自www.anxorj.tw請勿采集。

免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
Copyright © 2017 www.anxorj.tw All Rights Reserved
陕西快乐10分下载