2017-07-07 33 views
0

更具體地說,我的函數抓取我的數據庫表中的所有域並返回它們。我想知道如何將這些域輸入到另一個將爲該表中的每個域運行Kali Linux工具URLcrazy的函數。如何獲取函數的輸出並用作另一個函數python的輸入?

例如我的函數,輸出這些:

google.com
yahoo.com
下面是函數:

def grab_domains(): 
    try: 
     db = pymysql.connect(host="localhost", 
         user="root", passwd="root", 
         db="typosquat") 
except ConnectionAbortedError as e: 
    print(e, "\n") 

temp = "" 
cursor = db.cursor() 
cursor.execute('SELECT name From domains') 
for rows in cursor.fetchall(): 
    for entries in rows: 
     temp += entries 
     domains = entries[0:] 
     print(domains) 

return temp 

這裏是輸出:

google.com
yahoo.com

如何編寫另一個函數來運行這些域上的腳本URLcrazy?假設所有腳本都在同一個文件位置。

這是我所有我無法弄清楚如何爲每個域運行它,只知道如何爲單個輸出。

def run_urlcrazy(): 
    np = os.system("urlcrazy " + grab_domains()) 
    print(np) 
    return np 

如何我得到這個功能以運行URLcrazy爲每個域?^^

這是我的第一篇文章曾經在堆棧溢出讓我知道我能做些什麼來改善它,並幫助我如果可能的話,問題!由於

+0

簡單地說,爲什麼不把第一個函數的輸出寫入文件並從第二個腳本讀取文件? – PYA

回答

2

你需要一個循環:

def run_urlcrazy(): 
    ret_vals = [] 
    for domain in grab_domains(): 
     np = os.system("urlcrazy " + domain) 
     ret_vals.append(np) 
    return ret_vals 

我推薦一個for循環,因爲它可以有效地在您的任何函數返回迭代。


你需要稍作修改,你grab_domains()功能以及:

temp = [] 
cursor = db.cursor() 
cursor.execute('SELECT name From domains') 
for rows in cursor.fetchall(): 
    for entries in rows: 
     domains = entries[0:] 
     temp.extend(domains) 

return temp 

現在,你的函數返回域的列表。你可以迭代這個。

+0

'grab_domains()'只返回一個'domain'對嗎? – PYA

+1

@pyjg我提出了一個修改。看來OP將它連接在一個字符串中。 –

+0

是的,這是問題,與串連接。謝謝! – jakethesnake

相關問題