This Python project provides a comprehensive solution for analyzing network connections using the netstat
command. The project is structured into multiple modules for enhanced readability and modularity.
The Common.py
module centralizes common configurations for subprocess execution.
subprocess_run_args_str = "shell=True, capture_output=True, text=True, encoding='utf8'"
subprocess_run_args = {}
for arg in subprocess_run_args_str.split(', '):
key, value = arg.split('=')
subprocess_run_args[key] = eval(value)
del subprocess_run_args_str
The Process.py
module defines a Process
data class for representing system processes.
from dataclasses import dataclass
from subprocess import run
from Common import subprocess_run_args
@dataclass
class Process:
pid: int
command_line: str = ''
# ... (omitted for brevity)
The Connection.py
module contains data classes related to network connections, offering a structured representation.
from dataclasses import dataclass
@dataclass
class BaseConnection:
# ... (omitted for brevity)
@dataclass
class TCP_State():
# ... (omitted for brevity)
@dataclass
class Common_Connection_metrics():
# ... (omitted for brevity)
@dataclass
class TCP_Connection(Common_Connection_metrics, TCP_State, BaseConnection):
# ... (omitted for brevity)
@dataclass
class UDP_Connection(Common_Connection_metrics, BaseConnection):
# ... (omitted for brevity)
The Netstat.py
module encapsulates the logic for running the netstat
command and parsing its output.
from subprocess import run
from Common import subprocess_run_args
from Connection import TCP_Connection, UDP_Connection
protos = ('tcp', 'udp')
families = ('inet', 'inet6')
class Netstat:
# ... (omitted for brevity)
The test.py
script demonstrates the usage of the project by fetching network connections for each process.
#!/usr/bin/env python3
from Netstat import Netstat
from Process import Process
# ... (omitted for brevity)
- Python >= 3.7
-
Clone the repository to your local machine:
git clone https://github.com/vitpodsokhin/apples.git
-
Navigate to the project directory:
cd apples
-
Run the test script:
./test.py
This script fetches and prints network connections for each process.
- Modify the project modules to suit your specific requirements.
- Explore the individual modules to understand the data classes and functionalities they provide.
If you find any issues or have suggestions for improvements, feel free to open an issue or submit a pull request. Your contributions are welcome!
This project is licensed under the GNU GPL License. Feel free to use, modify, and distribute the code for your purposes.
- Special thanks to the Python community and contributors.