を検索し、私はこのような何かを見た値で、本当に長いリスト(例切り捨て)を持っている:はだけなので完全に一致
derp = [[('interface_name', 'interface-1'), ('ip_address', '10.1.1.1'), ('mac_address', 'xx:xx:xx:xx:xx:xx')], [('interface_name', 'interface 2'), ('ip_address', '10.1.1.2'), ('mac_address', 'xx:xx:xx:xx:xx:xx')], [('interface_name', 'interface 3'), ('ip_address', '10.1.1.11'), ('mac_address', 'xx:xx:xx:xx:xx:xx')]]
私はその巨大なリストを通過する機能を持っており、ちょうど試合を引き出しますIPに基づいていますが、問題は、正確な一致だけでなく、最後のオクテットのものと一致するようです。
findIP = sys.argv[1]
def arpInt(arp_info):
for val in arp_info:
if re.search(findIP, str(val)):
interface = val.pop(0)
string = val
print string, interface[1]
arpInt(derp)
は、したがって、上記の場合には、findIP = '10 .1.1.1' それは10.1.1.1および10.1.1.11で戻ってくる場合。私はちょうど私の入力が正確にそれを強制的に強制する方法がなければならないと思います...
IPv4アドレスは実際には32ビット整数です。小数点付き10進表記は人間が読みやすくするためのものです。テキスト表現を整数に変換すると、適切に順序付けして比較することができます。 –
私の初心者のための謝罪@RonMaupin、あなたはあなたが何を意味するかについてもう少し詳細を与えることができますか? – DangerZone
結果を追加します:第1オクテットに '16,777,216'(' 2^24')を掛け、第2オクテットに '65,536'(' 2^16')を掛け、第3オクテットに '256'(' 2^8 ')と第4オクテット。これにより、IPv4アドレスのバイナリ表現が32ビット整数になります。適切にソートするには、符号なし整数を使用します。完全一致の整数値を簡単に比較できます。 IPアドレスはIPヘッダーに配置され、ネットワークデバイスによって整数として使用されます。 IPv4アドレスのテキスト表現は人が読みやすいように使用されていますが、IPv4アドレスが表現され使用されるのは実際の方法ではありません。 –