add get_port to bin

This commit is contained in:
Gabriel Brown 2025-01-14 11:57:33 -06:00
parent b0bbfe4cec
commit 8a58aaebf6

View File

@ -0,0 +1,74 @@
#!/usr/bin/env python3
import subprocess
import questionary
import re
import sys
def get_interfaces():
try:
# Run tcpdump -D command
result = subprocess.run(['sudo', 'tcpdump', '-D'],
capture_output=True,
text=True)
# Split output into lines and create a list of interfaces
interfaces = []
for line in result.stdout.split('\n'):
if line.strip():
# Extract interface name and description
match = re.match(r'\d+\.(.+)', line)
if match:
interfaces.append(line)
return interfaces
except Exception as e:
print(f"Error getting interfaces: {e}")
sys.exit(1)
def get_port_info(interface_number):
try:
# Extract just the number from the interface selection
number = interface_number.split('.')[0]
# Run tcpdump command for port info
cmd = [
'sudo', 'tcpdump', '-nnv',
'-i', number,
'-s', '1500',
'-c', '1',
'ether[12:2]==0x88cc'
]
print("\nListening for LLDP packets (this might take a few seconds)...")
result = subprocess.run(cmd, capture_output=True, text=True)
return result.stdout or result.stderr
except Exception as e:
print(f"Error getting port info: {e}")
sys.exit(1)
def main():
# Get list of interfaces
interfaces = get_interfaces()
if not interfaces:
print("No interfaces found!")
sys.exit(1)
# Let user select an interface
selected = questionary.select(
"Select an interface to check port information:",
choices=interfaces
).ask()
if selected:
# Get and display port information
port_info = get_port_info(selected)
print("\nPort Information:")
print(port_info)
else:
print("No interface selected.")
if __name__ == "__main__":
main()