1
0
mirror of https://github.com/kellyjonbrazil/jc.git synced 2025-08-06 22:32:54 +02:00

fix for linx arp -a cases where an icomplete hw address is present

This commit is contained in:
Kelly Brazil
2022-08-28 12:40:46 -07:00
parent fc06d195ec
commit 4d4b95c995
5 changed files with 20 additions and 1 deletions

View File

@ -3,6 +3,8 @@ jc changelog
xxxxxxxx v1.21.1 xxxxxxxx v1.21.1
- Fix IP Address string parser for older python versions that don't cleanly - Fix IP Address string parser for older python versions that don't cleanly
accept decimal input format (e.g. python 3.6) accept decimal input format (e.g. python 3.6)
- Fix `arp -a` parser for cases where incomplete hardware addresses are found
in the arp table on linux
20220821 v1.21.0 20220821 v1.21.0
- Add IP Address string parser - Add IP Address string parser

View File

@ -140,4 +140,4 @@ Returns:
### Parser Information ### Parser Information
Compatibility: linux, aix, freebsd, darwin Compatibility: linux, aix, freebsd, darwin
Version 1.10 by Kelly Brazil (kellyjonbrazil@gmail.com) Version 1.11 by Kelly Brazil (kellyjonbrazil@gmail.com)

1
tests/fixtures/centos-8/arp-a.json vendored Normal file
View File

@ -0,0 +1 @@
[{"name":null,"address":"192.168.71.21","hwtype":null,"hwaddress":null,"iface":"ens33"},{"name":null,"address":"192.168.71.128","hwtype":null,"hwaddress":null,"iface":"ens33"},{"name":null,"address":"192.168.71.254","hwtype":"ether","hwaddress":"00:50:56:e2:91:0e","iface":"ens33"},{"name":null,"address":"192.168.71.226","hwtype":null,"hwaddress":null,"iface":"ens33"}]

4
tests/fixtures/centos-8/arp-a.out vendored Normal file
View File

@ -0,0 +1,4 @@
? (192.168.71.21) at <incomplete> on ens33
? (192.168.71.128) at <incomplete> on ens33
? (192.168.71.254) at 00:50:56:e2:91:0e [ether] on ens33
? (192.168.71.226) at <incomplete> on ens33

View File

@ -40,6 +40,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.out'), 'r', encoding='utf-8') as f: with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.out'), 'r', encoding='utf-8') as f:
self.freebsd_arp_a = f.read() self.freebsd_arp_a = f.read()
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/arp-a.out'), 'r', encoding='utf-8') as f:
self.centos8_arp_a = f.read()
# output # output
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp.json'), 'r', encoding='utf-8') as f: with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/arp.json'), 'r', encoding='utf-8') as f:
self.centos_7_7_arp_json = json.loads(f.read()) self.centos_7_7_arp_json = json.loads(f.read())
@ -71,6 +74,9 @@ class MyTests(unittest.TestCase):
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.json'), 'r', encoding='utf-8') as f: with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/freebsd12/arp-a.json'), 'r', encoding='utf-8') as f:
self.freebsd12_arp_a_json = json.loads(f.read()) self.freebsd12_arp_a_json = json.loads(f.read())
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-8/arp-a.json'), 'r', encoding='utf-8') as f:
self.centos8_arp_a_json = json.loads(f.read())
def test_arp_nodata(self): def test_arp_nodata(self):
""" """
Test 'arp' with no data Test 'arp' with no data
@ -137,6 +143,12 @@ class MyTests(unittest.TestCase):
""" """
self.assertEqual(jc.parsers.arp.parse(self.freebsd_arp_a, quiet=True), self.freebsd12_arp_a_json) self.assertEqual(jc.parsers.arp.parse(self.freebsd_arp_a, quiet=True), self.freebsd12_arp_a_json)
def test_arp_a_centos8(self):
"""
Test 'arp -a' on CentOS 8 with incomplete hw addresses
"""
self.assertEqual(jc.parsers.arp.parse(self.centos8_arp_a, quiet=True), self.centos8_arp_a_json)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()