2017-07-07 174 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

相关问题