add get_port to bin
This commit is contained in:
parent
b0bbfe4cec
commit
8a58aaebf6
74
configs/copy/home/.local/bin/get_port
Executable file
74
configs/copy/home/.local/bin/get_port
Executable 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()
|
Loading…
x
Reference in New Issue
Block a user