2012-11-28 11 views
7

私はscapyのためにUbuntuに小さなスクリプトを書いています。Scapy.all import *が動作しない

#!/usr/bin/env python 
import sys 
#from scapy.all import * 
try 
    import scapy 
    except ImportError: 
    del scapy 
    from scapy import all as scapy 
i= IP() 
t= TCP() 
i.dst='192.168.56.100' 
t.dport=22 
pakket=i/t 
answered,unanswered=sr(pakket) 
answered.nsummary() 

ここで別のトピック(解決策として試してみました)が原因で「試行」が書かれました。 単に「してみてください」withouth scapy.allインポート*からでそれをしようとしたときに、このコードで私の現在の出力は、次の

Traceback (most recent call last): 
File "./scapy.py", line 5, in <module> 
import scapy 
File "/home/nicholas/scapy.py", line 9, in <module> 
i=IP() 
NameError: name 'IP' is not defined 

です。

Googleでさまざまな方法でインポートを試みましたが、それでも機能しません。誰でも私が間違っていることを教えてもらえますか? scapyのソースを見てから

+2

彼らは重要ではない、インデントを修正してください。 – Tadeck

+0

scapy.allから*のようなものを試してみてください。他のものを使用していない場合は、IP、TCP、sr *を試してみてください。 –

+0

試してみると、まだ 'すべてのモジュールはありません'というメッセージが表示されます – Nicholas

答えて

2

(この記事のインデントを気にしない)、scapyのパッケージはimport何に見えるか__init____all__を定義していません。その結果、from scapy.all importになる前に、sys.modulesにはまだ明示的にimport scapy.all(またはfrom scapy import all)が必要です。これは、プログラムフローで一度だけ発生しなければならないことに注意してください。インタープリタがモジュールをインポートした後は、どこからでも実行されるすべてのコードで利用できるようになります。 Python docs on modulesを見て、importの具体的なパッケージのインポート方法については、詳細を参照してください。

編集: 私は今、問題を見ると思う、私はあなたのスタックトレースの間違った部分に注意を払っていた。あなたがここで扱っていることは、名前の衝突です。あなたのファイルの名前はscapy.pyなので、そのファイルのコンテキストからimport scapyを指定すると、ファイル自体をモジュールとして実際にインポートしています。あなたのファイルにはallという名前のサブモジュールがありません(パッケージではないのでできません)、あなたが見ているインポートエラーが発生します。ファイルの名前を、その中にインポートするパッケージやモジュールと競合しないものに切り替えて、うまく動作するかどうか確認してください。

ちなみに、スタックのトレースでは、インポートが実際に本質的に再帰的に1つのファイルを呼び出すことに注意してください。それは、何かが輸入過程でうんざりしているという手掛かりになるはずです。

+1

本当に助けてくれて、「No module all named」のようなものを手に入れてください。 – Nicholas

+0

私の答えを編集しました。あなたの問題を解決するはずです。 –

+0

さて、私たちはどこかに行っています。しかし、私が名前を変えたとき、それは「悪い魔法の数」について不平を言っていました。私はhttp://stackoverflow.com/questions/514371/whats-the-bad-magic-number-errorのようにscapy.pycを削除しました。しかし、どのように正しい魔法の数字でそれを取り戻すのですか? * EDITは、今動作するようです!私はスクリプトの実行の前にpython3を入れましたが、それは必要ではないようですね、ありがとう! – Nicholas

0

私は現在のディレクトリにscapy.pyがあるときこれを見ました。 scapy.all import *は現在のディレクトリで最初に見えるようです。

1

かなり古い投稿です。まだ探しているものについては は、現在のバージョンとの正しいインポートは次のようになります。

from scapy.all import *

関連する問題