私はip範囲(すなわちx.y.z.0/24)をスキャンしてオンラインホストのリストを返すpythonプロジェクトを作成しました。これは、オンラインホストリストをIPアドレスだけで保存します(つまり、['192.168.0.1'、 '192.168.0.2'、 '192.168.0.8'、...])私はこの次のステップに問題があります。このオンラインホストリストをIP範囲と比較して、他のデバイスを排除するためのコンピュータであることを確認してください。ここでIPリストを別のIPリストまたはIP範囲と比較する
0
A
答えて
0
はあなたが試すことができます解決策(それが少し肥大化しているが、私は後でうまくいけば、それを編集します)
def get_range(str_num):
""" Converts string representation of number or range into (min,max) tuple """
try:
num = int(str_num)
return num, num
except ValueError:
min_, max_ = str_num.split('-')
return int(min_), int(max_)
def host_in_range(host, host_range):
""" Checks whether given host belongs to given range (both are range representation """
#print(*zip(host, host_range))
for (min_h, max_h), (min_r, max_r) in zip(host, host_range):
if (min_h < min_r) or (max_h > max_r): return False
return True
if __name__ == "__main__":
hosts_str = ['192.168.0.1', '192.168.0.10', '0.168.0.0', '192.168.1.10', '192.168.0.255']
hosts = [x.split('.') for x in hosts_str]
hosts = [[get_range(x) for x in elem] for elem in hosts]
host_ranges_str = ['0-255.168.0.0-254', '192.168.2-5.0-255']
host_ranges = [x.split('.') for x in host_ranges_str]
host_ranges = [[get_range(x) for x in elem] for elem in host_ranges]
for x in range(5):
print(hosts_str[x], "in range", host_ranges_str[0], host_in_range(hosts[x], host_ranges[0]))
+0
ありがとうございます情報これを試して、何が起こるか見てみましょう。 IP文字列をINTに変換し、ipaddressモジュール内に戻す簡単な方法を見つけました。これにより、静的に比較がかなり簡単になりますが、作成しているプログラムはユーザーの入力に基づいて可変です。 int(ipaddress.IPv4Address( '192.168.0.1')) str(ipaddress.IPv4Address(3232235521)) – Ryan
関連する問題
- 1. IPのリストは範囲
- 2. IP範囲とIP範囲 - 動的テキストボックス
- 3. 個別のIP範囲とIPを区切る
- 4. C#のIPアドレス範囲を比較するには?
- 5. は、IP範囲にアプリケーションを公開するか、IP範囲
- 6. (スタートIP - エンドIP)の範囲をIPにIPアドレスを変換
- 7. IPをホスト/ネットワークアドレスのリストと比較します。
- 8. IPアドレスのリストからIPアドレス範囲を見つける方法
- 9. 計算IP IPでの範囲
- 10. IP pingの範囲
- 11. サブネット範囲とIPリストを指定すると、IPがすべてのローを選択します
- 12. プライベートIPアドレス範囲
- 13. C#IP範囲フィルタ
- 14. どのようにPHPのパブリックIPアドレスにローカルIPアドレスの範囲を比較するには?
- 15. urlfetch IP範囲の問題
- 16. Firebase CORS、ホワイトリストのIP範囲
- 17. インドのIPアドレス範囲
- 18. サブネットでip範囲をIPに変換する
- 19. IPアドレスの比較方法
- 20. 複数のIP範囲のセット間の異なるIP
- 21. WSO2 IPレベルのスロットリング - 24ビットマスクのIP範囲のみ?
- 22. ScapyでIP範囲をpingする
- 23. Rails 3 - IPアドレスの取得と比較
- 24. IPをブロックするAWS WAF IPリストを更新する
- 25. IPリストがIP範囲(CIDR表記)のリストにあるかどうかを確認するための短時間の方法
- 26. ホストのIPアドレスのリスト
- 27. Redisにip範囲を格納
- 28. Perl IPアドレス範囲の正規表現
- 29. mysqlの挿入IPアドレス範囲
- 30. WebRTC TURNサーバーのIP範囲アクセス制限
IPはそのビットマスク内にあるかどうかを確認、ビットマスクするiprangeを変換し、int型にIPSを変換提案されています。 –
例を参考にしていただければ幸いです。 – Ryan