Time of Update: 2017-01-13
IPy模組可以很好的協助我們完成IP的計算和規劃。現在網上也有很多IP地址計算的網站,這個模組實現的功能和他們也差不多。安裝先下載源碼,地址:ps://pypi.python.org/pypi/IPy/">https://pypi.python.org/pypi/IPy/ ,然後解壓後使用命令python setup.py install安裝。使用1、顯示IP類型>>> IP('192.168.1.1').version() 4 >>>
Time of Update: 2017-01-13
對於採集、註冊或者代理來說,如果伺服器公網IP可以自動切換,那麼可能會少很多麻煩。最近博主就使用阿里雲的api實現了這個小功能。實現的步驟比較簡單,首先需要申請阿里雲的api key。然後申請vpc專用網路,普通經典ecs主機無法掛載彈性IP,在剛剛申請的專用網路中開通一台ecs伺服器。接著申請Elastic IP
Time of Update: 2017-01-13
指令碼在github:https://github.com/linuxyan/linuxyan/tree/master/python/Batch_create_pub_key下載下來指令碼之後,首先我們要在管理機上建立公開金鑰,運行如下命令,一路斷行符號。ssh-keygen -t
Time of Update: 2017-01-13
configParser 基本使用讀取設定檔-read(filename) 直接讀取檔案內容-sections() 得到所有的section,並以列表的形式返回-options(section) 得到該section的所有option-items(section) 得到該section的所有索引值對-get(section,option) 得到section中option的值,返回為string類型-getint(section,option)
Time of Update: 2017-01-13
前面認識的一個python庫 docopt,可以使用__doc__來實現命令列參數的處理,使用起來非常簡單;我也剛好有在命令列添加或刪除testsuite/testcase的需求,所以寫了一個demo檔案。PS:我才發現docopt有2年沒更新了,好吧,還是可以繼續用它。直接上我的demo程式#!/usr/bin/env python"""Just try docopt lib for pythonUsage: try_docopt.py (-h | -
Time of Update: 2017-01-13
異常對於一個語言來說非常重要,異常的棧資訊對於開發人員特別重要,因為可以根據異常棧來找到第一次拋出異常的地方。但是懂得正確的拋出異常的人不是很多。首先,以下是最糟糕的def revert_stuff(): passdef some_code(): raise Exception('oops, some error occur')try:
Time of Update: 2017-01-13
爬QQ空間之類的頁面時大多需要進行登入,研究QQ登入規則的話,得分析大量Javascript的加密解密,這絕對能掉好幾斤頭髮。而現在有了selenium工具,麻麻再也不用擔心你的QQ登入!Selenium是一個WEB自動化測試載入器,它運行時會直接執行個體化出一個瀏覽器,完全類比使用者的操作,比如點選連結、輸入表單,點擊按鈕提交等。所以我們使用它可以很方便的來登入QQ空間。#匯入selenium2中的webdriver庫from selenium import
Time of Update: 2017-01-13
通過 Python 指令碼使用第三方SMTP伺服器發送郵件。 此指令碼可以通過傳參的形式使用已經配置好的第三方SMTP伺服器發送郵件。 寫指令碼使用 Python 3.5.1 ,CentOS 7 內建的 Python 2.7.5 測試可以正常使用。 使用指令碼時需要傳入三個參數,分別是:’收件者’ ‘郵件主題’ ‘郵件內文’ 。收件者可以是多個,格式為:
Time of Update: 2017-01-13
題目:輸入一個整數N,輸出N的所有最小因子,也稱素因子。其中,任何一個大於1的數,都可以寫成多個素數的乘積,我們把這些素數叫做這個數素因子。例如:輸入:120輸出:2 2 2 3 5輸入:27輸出:3 3 3python求解素因子代碼如下:# -*- coding:utf-8 -*-def isprime(num):count = num / 2while count >1:if num % count == 0:return Falsebreakelse:count -=
Time of Update: 2017-01-13
手冊教程中只提供了 starturls 的方式來定義待採集url列表,假設我現在採集某站文章,每個url只有id部分變化,id從1到100w,我不可能寫100w個url到starturls列表中,那怎麼辦呢?要構建如此數量的url,我首先想到的是將start_urls的值設定成一個generator:start_urls = self.urls()def urls(self): i=1 while i<1000000:
Time of Update: 2017-01-13
發現有IP對我們API進行大量的數量採集,所以寫這個指令碼來擷取哪些IP只訪問單一介面,卻不訪問其它介面,一般這樣的行為,是異常的。分析前端負載nginx的日誌,日誌格式如下:114.249.4.96 - - [15/Jan/2016:23:59:47 +0800] "POST /api2/realtimetrack/ HTTP/1.1" 200 48 "-" "-" "-"222.128.172.215 - - [
Time of Update: 2017-01-13
Python時區的處理發現python沒有簡單的處理時區的方法,不明白為什麼Python不提供一個時區模組來處理時區問題。 好在我們有個第三方pytz模組,能夠幫我們解決一下時區問題。pytz簡單教程pytz查詢某個的時區可以根據國家代碼尋找這個國家的所有時區。>>> import pytz>>> pytz.country_timezones('cn')['Asia/Shanghai', 'Asia/Harbin', 'Asia/Chongqing',
Time of Update: 2017-01-13
檔案如下# cat cesc a,1a,2b,3b,4c,2d,5需要擷取abcd出現的次數,逗號後面數位和及平均值。With shell:# grep -E ^a cesc |awk -F ',' '{sum+=$2} END {print "a, Count:" NR " Sum: " sum " Average: " sum/NR}'a, Count:2 Sum: 3 Average: 1.5# grep -E ^b cesc |
Time of Update: 2017-01-13
關於Dubbo Hession協議:Dubbo本身支援多種遠程調用方式,例如Dubbo RPC(二進位序列化 + tcp協議)、http invoker(二進位序列化 + http協議)、hessian(二進位序列化 + http協議)、WebServices (文本序列化 +
Time of Update: 2017-01-13
之前用linux shell寫過多線程統計youku網站會員的,現在用python再實現一遍,做為學習筆記備忘。Python多線程可以通過匯入thread模組,來使用thread中的函數,或者通過繼承threading類來建立線程。每個進程都擁有自己的地址空間,記憶體,資料棧以及記錄其運動軌跡的輔助資料。python代碼的執行主要由python虛擬機器(也叫解譯器GIL主迴圈)來控制,對python虛擬機器的訪問由python全域解譯器鎖GIL來控制,正是這個鎖保證了任一時刻只有一個線程在運行。
Time of Update: 2017-01-13
python中的很多模組是非常牛X的,之前提到過logging模組(其功能類似於java下的Log4j ),由於最近一個涉及網路排障的指令碼需要日誌輸出,這裡就使用了python的logging模組去實現。日誌全部寫到一個檔案中時,隨著時間的推移檔案會越來越來,這裡可以利用TimedRotatingFileHandler方法或RotatingFileHandler方法來進行處理。在日誌輸出不涉及輪轉的時候,可以通過logging.basicConfig
Time of Update: 2017-01-13
多態是物件導向語言的一個基本特性,多態意味著變數並不知道引用的對象是什麼,根據引用對象的不同表現不同的行為方式。在處理多態對象時,只需要關注它的介面即可,Python中並不需要顯示的編寫(像Java一樣)介面,在使用對象的使用先假定有該介面,如果實際並不包含,在運行中報錯。class handGun(): def __init__(self): pass
Time of Update: 2017-01-13
nowsms簡訊多媒體訊息架構的admin頁面有提供一個xml頁面,該頁面詳細顯示modem的各個狀態。然後結合nagios,可以很好的監控modem狀態。該xml地址類似如:http://192.168.0.115:8800/admin/xmlstatus?username=sijitao&password=sijitao。 如果對python如何解析xml不是很清楚的可以參考這個網址:http://www.runoob.com/python/python-xml.html。
Time of Update: 2017-01-13
Nagios強大的警示功能現在又有了新玩法,思路就是調用微信公用平台的api介面發送警示郵件。在正式操作之前,有幾個準備工作要做。先安裝nagios,可以使用我提供的nagios一鍵安裝指令碼。然後是去微信公用平台申請一個企業號,我申請時填的是組織,沒有認證也可以使用。最後登入公用平台添加通訊錄,和建立應用(例如nagios),記錄應用的id後面要用。使用者權限什麼自己設定。微信指令碼nagios和微信平台都準備好之後,接下來下載微信命令指令碼。右鍵點擊下載,儲存。然後上傳到nagios伺服器,
Time of Update: 2017-01-13
一、Windows環境首先當然是安裝你需要的兩個不同版本的python,我安裝的是2.7和3.4的,兩個版本安裝順序無所謂,但是後面安裝的會變成預設的(因為我是後安裝的python 3.4,它就變成了預設的python)。然後去python27 檔案夾下面把python.exe改名python2.exe,然後就可以在命令列下通過python或者py來調用3.x,python2來調用2.x。另外pip的話直接使用 pip2 或者 pip3