2017-07-07 25 views
0

もっと具体的には、私の関数は、私のデータベーステーブル内のすべてのドメインを取得し、それらを返します。これらのドメインを別の関数に入力する方法を知りたいのですが、そのテーブルの各ドメインに対してKali LinuxツールURLcrazyを実行します。関数の出力を取得し、別の関数の入力として使用する方法python?

例えばこれらを出力My機能:

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

簡単に言えば、最初の関数の出力をファイルに書き込んで、2番目のスクリプトからファイルを読み込むのはなぜですか? – 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

関連する問題