1、オプションを指定しないと、ヘルプ情報
#!は/ usr / binに/パイソンのenv #コード:UTFを8 インポートソケット インポートSYS インポートOS からスレッディングインポートスレッド #インポートモジュール のIF(sys.argvの)= 2 lenを!: 印刷 " 入力モード:"、sysargv [0] 、" IPliebiaoは、" 印刷 " の例を:./test.py /root/ip.txt " sys.exit() DEF getBanner(IP、ポート): socket.setdefaulttimeout( 2 ) #は、タイムアウト時間が2秒で設定 S = ソケット。ソケット() #この方法は、ソケットモジュールソケット呼び出しを 試して: s.connect((IP、ポート)) #受信IPとポートの 結果= s.recv(1024 ) #前のデータ情報に1024Bリターン受信 S。CLOSEを() #切断 リターン結果 #の出力 を除い: パス DEF checkVulns(IP、ポート): バナー = getBanner(IP、ポート) IF バナー: IF(" 2.0 " でバナー): 印刷 IP +は、" 脆弱である" 他: 印刷 IP +は" unvulnerable IS " 他: 印刷 IPを、" 未バナーGET " #1 の決意の結果かどうかサーバーバージョン2.0 DEF メイン(): #ないようモジュール ファイル名= STR(sys.argvのを、[1。.strip()]) IF ないos.path.exists(ファイル名): 印刷 「ファイルが存在しない」 sys.exit() #は閉鎖が存在しない、ファイルの導入が存在するか否かを判定する F =オープン(ファイル名、「R&LT 」) のための I におけるf.readlines() : IPi.strip =(" \ N- " ) ポート 22がある= T =スレッド(対象= checkVulns、引数= (IP、ポート)) t.start() f.close() #の輸入書類、および削除休憩 IF __name__ = = " __main__ " : メイン() #の出力
2、オプションとヘルプ情報があります
#!は/ usr /ビン/ ENVのpython #のコード:UTF-8 輸入ソケット 輸入SYS 輸入OS からスレッド輸入スレッド から optparseは輸入のOptionParser デフgetBanner(IP、ポート): socket.setdefaulttimeout( 2 ) S = socket.socket() 試す: s.connectを((IP、ポート)) 結果 = s.recv(1024 ) S。CLOSE() の戻り結果 除く: 渡す デフcheckVulns(IP、ポート): バナー = getBanner(IP、ポート) 場合はバナー: 場合(" 2.0 " にバナー): プリント IP + " 脆弱である" 他: プリント IP +は" unvulnerableです" 他: プリント IP、「バナーを取得できません" DEF メイン(): 使用法 = " 使用法:%PROG -f <ファイル名> -i <IPアドレス> " パーサ =はOptionParser(使用=用法) parser.add_option(" -f "、" --file "、タイプ= " 文字列"、DEST = " ファイル名"、ヘルプ= " IPアドレスファイル" ) parser.add_option(" -i "、" --ip "タイプ= " 文字列"DEST = " アドレス"ヘルプ= " IPアドレス" ) (オプション、引数) = パーサ。 parse_args() #設定オプションは-fと-iとヘルプ-h ファイル名 = options.filenameの アドレス = options.address IF(ファイル名==なしとアドレス== なし): 印刷 「IPアドレスまたはIPリストファイルを指定してください」 sys.exit( ) #入力が空でないと判断 IF 名: IF ないos.path.exists(ファイル名): プリント " bucunzai " sys.exit() F =オープン(ファイル名、" R&LT " ) のために I でf.readlines(): IP= i.strip(" \ nは" ) ポート = 22 トン =スレッド(対象= checkVulns、引数= (IP、ポート)) t.start() f.close() #设置-f参数引入的方式 であればアドレス: 接頭辞 = address.split(" ")[0] + " " + address.split(" ")[1] + " " + address.split(" ")[2] + " " のための I 中の範囲(1、255 ): IP =接頭辞+ STR(I) ポート = 22である T =スレッド(対象= checkVulns、引数= (IP、ポート)) t.start() #の配置は、-iパラメータを導入 IF __name__ == " __main__ " : メイン()