關於FDNS資料抽取的一些記錄

2022-03-01 03:44:53 字數 2679 閱讀 9796

提取出cncomorgnetgov.cnedu.cn的記錄入庫

以下是抽取過程中用到的部分命令。

awk是乙個強大的文字分析工具。簡單來說awk是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。 通常,awk是以檔案的一行為處理單位的。

使用方法: awk 'pattern '

pattern表示awk在資料中查詢的內容,action是找到匹配內容時所執行的一系列命令。

1,無action時,預設輸出行內容。

2,-f引數設定輸入域分隔符,將一行用指定字元分隔開

3,awk -f ':' '/root/ ' /etc/passwd

4,awk -f ':' '' /etc/passwd

5,awk -f ':' ' /etc/passwd'

6,使用printf替代print,可以讓**更加簡潔,易讀:awk -f ':' '' /etc/passwd。把分割後前四項追加到以第五項命名的檔案中。

--pipe將輸入(stdin)分為多塊(block),然後分配給多個cpu並行執行,最後的結果順序與原始順序一致。

--block引數可以指定每塊的大小,預設為1m。

zcat 20200221-fdns.json.gz | parallel --pipe --block 50m python demo.py,把輸入劃分為50m一塊並行執行。

在不解壓檔案的情況下,把檔案內容輸出到標準輸出。(原壓縮檔案不做任何更改)

zcat 20200221-fdns.json.gz | wc -l

postgresql資料庫的命令,從檔案向資料庫導資料。

pg_bulkload -i $/$ -o "table=a_record_$i" -o "type=csv" -o "writer=parallel" -d $ -ufdns -l /tmp/a_record_$.log

沒看懂,用時再查。

insert時,如果記錄不存在則完成插入,已存在則更新指定列:

insert into table_name(subdomain, domain, ip, timestamp) values('...') on conflict(subdomain) do update set ip=excluded.ip, timestamp=excluded.timestamp

解釋:subdomain已存在時,更新它的ip、timestamp欄位

1,登入遠端伺服器的pg

psql -h 192.168.199.17 -p 5432 socweb postgres

2,執行sql檔案中命令,無需先登入資料庫

psql -u postgres -d tcp_scans -f 1.sql

3,在shell中直接建立、刪除pg資料庫

createdb -u postgres -o postgres abc  # -o 指定擁有者owner

dropdb -u postgres abc # 刪除abd庫

(不知道對不對哈,待求證)

在subdomain列上建立正向索引,只可用select * from table where subdomain like 'abc%',對like '%abc'無效,要想也生效,需要建立subdomain的反向索引。

def get_conn():

return psycopg2.connect(host='host', database='database',

user='user', password='password')

with get_conn() as conn:

with conn.cursor() as curs:

for line in fp:

name, domain, ip, timestamp = line.strip().split(',')

sql = "insert into {} (name,domain,ip,timestamp) " \

"values ('{}','{}','{}',{}) on conflict (name) do update " \

"set ip=excluded.ip, timestamp=excluded.timestamp;".format(

table, name, domain, ip, int(timestamp))

curs.execute(sql)

count += 1

if count % 1000 == 0:

conn.commit()

conn.commit()

關於爬蟲的一些記錄

普通的文字型爬蟲就不說了,這裡主要說一下在爬取有js指令碼和驗證碼的一些內容時,遇到的坑。作業系統的選擇 由於爬蟲 資訊分析ai web介面都部屬在centos上,且系統部署的最優選擇還是centos。爬蟲方面,文字型爬蟲是基礎,模擬瀏覽器也是必須的。目前模擬瀏覽器就三樣,firefox chrom...

關於torch的一些記錄

int型tensor from torch.autograd import variable from torch import inttensor var variable inttensor 1,0 0,1 檢視size var.size torch.size 2,2 將var.size 轉換為...

關於死鎖的一些記錄

死鎖是由於併發程序只能按互斥方式訪問臨界資源等多種因素引起的,並且是一種與執行時間和速度密切相關的錯誤現象。死鎖的一般定義 若在乙個程序集合中,每乙個程序都在等待乙個永遠不會發生的事件而形成乙個永久的阻塞狀態,這種阻塞狀態就是死鎖。死鎖的產生條件 1.互斥 mutual exclusion 系統存在...