欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)一個(gè)轉(zhuǎn)存純真IP數(shù)據(jù)庫(kù)的腳本分享

 更新時(shí)間:2017年05月21日 09:46:50   作者:KBdancer  
工作中我們常需要使用純真IP數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)做分析,下面這篇文章主要給大家介紹了利用Python如何實(shí)現(xiàn)一個(gè)轉(zhuǎn)存純真IP數(shù)據(jù)庫(kù)的相關(guān)資料,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。

前言

之前寫過很多關(guān)于掃描腳本的文章,一直都沒寫自己的掃描IP段是哪里搞來的,也會(huì)有朋友經(jīng)常來問一些掃描經(jīng)驗(yàn),說實(shí)話我覺得這個(gè)工具并沒有實(shí)際的技術(shù)含量,但是能提高工作效率,就共享出來給大家耍?!?/p>

談到掃描經(jīng)驗(yàn),我個(gè)人通常都會(huì)針對(duì)不同的設(shè)備,不同的應(yīng)用選擇不同類型的段。

比如我現(xiàn)在掃描的目標(biāo)是一款電信光貓,那自然是選擇電信的IP段,光貓一般是家庭用戶,我們篩選下家庭用戶的活躍IP段,這樣我們就有針對(duì)性了。

再比如我現(xiàn)在想掃一款企業(yè)路由設(shè)備,那么我就可以選擇企業(yè)公司多的段。

純真IP真心是個(gè)不錯(cuò)的工具,我通常用來檢索某個(gè)地區(qū)的IP段,但是這個(gè)工具有個(gè)非常致命的缺點(diǎn),就是不能聯(lián)合查詢,而且這玩意每次用都要切換到win下面操作,對(duì)于我這種Linux來說自然是無法忍,索性寫個(gè)把純真IP轉(zhuǎn)存到mysql數(shù)據(jù)庫(kù)的腳本,這樣不用每次查詢都去win下面,還可以直接部署到遠(yuǎn)程,查詢方便了很多,最主要的還是支持多條件查詢。

需求

Python寫這個(gè)腳本技術(shù)上難度不大,主要還是用到了MySQLdb庫(kù),關(guān)于MySQLdb庫(kù)的安裝就不多說了,博客之前有寫相關(guān)的文章。這里咱們需要先分析下純真IP數(shù)據(jù)庫(kù)的數(shù)據(jù)文件結(jié)構(gòu),發(fā)現(xiàn)其實(shí)每一行的結(jié)構(gòu)都是固定的,那么寫起來就簡(jiǎn)單了。

編碼這塊我就不詳細(xì)說了,簡(jiǎn)單幾個(gè)方法就能輕松實(shí)現(xiàn),貼出來代碼

#!/usr/bin/env python
# coding=utf-8
# kbdancer@92ez.com

import MySQLdb
import sys

reload(sys)
sys.setdefaultencoding('utf8')


def save_data_to_mysql(mysql_object, ip_line):
 try:
  begin = ip_line[0:16].replace(' ', '')
  end = ip_line[16:32].replace(' ', '')
  try:
   location = line[32:].split(' ')[0]
  except:
   location = ''
  try:
   isp_type = line[32:].replace(' ', ' ').split(' ')[1].replace('\n', '').replace('\r', '')
  except:
   isp_type = ''

  this_line_value = [begin + "-" + end, location, isp_type]
  do_insert(mysql_object, this_line_value)
 except Exception, e:
  print e


def do_insert(mysql_object, row_data):
 try:
  insert_sql = """INSERT INTO `ipdb` (`iprange`,`location`, `type`) VALUES ( %s, %s, %s )"""
  mysql_object.insert(insert_sql, row_data)
 except Exception, e:
  print row_data
  print e


class Database:
 host = 'localhost'
 user = 'ipdb'
 password = '3u9whrpcEUBTnNNn'
 db = 'ipinfo'
 charset = 'utf8'

 def __init__(self):
  self.connection = MySQLdb.connect(self.host, self.user, self.password, self.db, charset=self.charset)
  self.cursor = self.connection.cursor()

 def insert(self, query, params):
  try:
   self.cursor.execute(query, params)
   self.connection.commit()
  except Exception, e:
   print e
   self.connection.rollback()

 def query(self, query, params):
  cursor = self.connection.cursor(MySQLdb.cursors.DictCursor)
  cursor.execute(query, params)
  return cursor.fetchall()

 def __del__(self):
  self.connection.close()


if __name__ == '__main__':
 mysql = Database()
 ip_file = open(sys.path[0] + "/ip.txt")
 print 'Start save to mysql ...'
 for line in ip_file:
  save_data_to_mysql(mysql, line)
 ip_file.close()
 print 'Save complete.'

注意

由于純真IP數(shù)據(jù)庫(kù)導(dǎo)出的txt文件并不是標(biāo)準(zhǔn)的無BOM UTF8編碼,直接解析肯定是失敗的,建議使用Notepad++先轉(zhuǎn)碼一下

效果

原始數(shù)據(jù)

轉(zhuǎn)存之后的數(shù)據(jù)

使用

首先需要導(dǎo)出純真ip數(shù)據(jù)庫(kù)為txt文檔,這里我導(dǎo)出為ip.txt

然后放到Py腳本同一目錄

對(duì)了,首先你還得有mysql數(shù)據(jù)庫(kù)

然后導(dǎo)入數(shù)據(jù)庫(kù)結(jié)構(gòu),就是那個(gè)sql文件

接著你還得修改腳本里面的mysql連接密碼等

最后執(zhí)行Py腳本就好了

說明

所有代碼都托管在Github

地址 https://github.com/kbdancer/myTools/tree/master/czip2mysql

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 安裝Keras,tensorflow,并實(shí)現(xiàn)將虛擬環(huán)境添加到j(luò)upyter?notebook

    安裝Keras,tensorflow,并實(shí)現(xiàn)將虛擬環(huán)境添加到j(luò)upyter?notebook

    這篇文章主要介紹了安裝Keras,tensorflow,并實(shí)現(xiàn)將虛擬環(huán)境添加到j(luò)upyter?notebook,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Python基于time模塊求程序運(yùn)行時(shí)間的方法

    Python基于time模塊求程序運(yùn)行時(shí)間的方法

    這篇文章主要介紹了Python基于time模塊求程序運(yùn)行時(shí)間的方法,涉及Python time模塊的使用及數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • python3整數(shù)反轉(zhuǎn)的實(shí)現(xiàn)方法

    python3整數(shù)反轉(zhuǎn)的實(shí)現(xiàn)方法

    這篇文章主要介紹了python3整數(shù)反轉(zhuǎn)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Sklearn多種算法實(shí)現(xiàn)人臉補(bǔ)全的項(xiàng)目實(shí)踐

    Sklearn多種算法實(shí)現(xiàn)人臉補(bǔ)全的項(xiàng)目實(shí)踐

    本文主要介紹了Sklearn多種算法實(shí)現(xiàn)人臉補(bǔ)全的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python+selenium 鼠標(biāo)事件操作方法

    python+selenium 鼠標(biāo)事件操作方法

    今天小編就為大家分享一篇python+selenium 鼠標(biāo)事件操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python實(shí)現(xiàn)猜拳游戲項(xiàng)目

    python實(shí)現(xiàn)猜拳游戲項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)猜拳游戲項(xiàng)目,以excel形式保存信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 一文講解如何查看python腳本所依賴三方包及其版本

    一文講解如何查看python腳本所依賴三方包及其版本

    Python因?yàn)榫哂谐嗟牡谌綆?kù)而被大家喜歡,下面這篇文章主要給大家介紹了關(guān)于如何查看python腳本所依賴三方包及其版本的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • python Graham求凸包問題并畫圖操作

    python Graham求凸包問題并畫圖操作

    這篇文章主要介紹了python Graham求凸包問題并畫圖操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Python學(xué)習(xí)筆記之lambda表達(dá)式用法詳解

    Python學(xué)習(xí)筆記之lambda表達(dá)式用法詳解

    這篇文章主要介紹了Python學(xué)習(xí)筆記之lambda表達(dá)式用法,結(jié)合實(shí)例形式詳細(xì)分析了lambda表達(dá)式的概念、功能、原理、組成及相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • Python的UTC時(shí)間轉(zhuǎn)換講解

    Python的UTC時(shí)間轉(zhuǎn)換講解

    今天小編就為大家分享一篇關(guān)于Python的UTC時(shí)間轉(zhuǎn)換講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02

最新評(píng)論