Initial commit: Organized structure for future implementations

This commit is contained in:
Emmanuel HC
2026-07-08 10:43:33 -05:00
parent 730031a8d9
commit 470c868c15
40 changed files with 68 additions and 55129 deletions

View File

@@ -1,38 +0,0 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['network_tester.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='Network_Scanner',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

15
README.md Normal file
View File

@@ -0,0 +1,15 @@
# Network Connection Tester (v1.0.0)
Developed by Emmanuel Hernandez | Automation Engineering
A high-performance CLI tool designed to monitor network devices in real-time using parallel processing (up to 30 workers). It verifies ICMP reachability (Ping) and TCP port status, exporting a historical log to a timestamped CSV on exit.
## Project Structure
* `src/cli.py`: Main execution script for the terminal interface.
* `devices_example.csv`: Template file for targets input.
## How to Run
1. Ensure you have Python installed and your virtual environment active.
2. Install dependencies: `pip install -r requirements.txt`
3. Execute the tool providing your CSV file:
```bash
python src/cli.py devices_example.csv

File diff suppressed because it is too large Load Diff

View File

@@ -1,134 +0,0 @@
('C:\\Code\\Projects\\Network_Tester\\dist\\Network_Scanner.exe',
True,
False,
False,
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\bootloader\\images\\icon-console.ico',
None,
False,
False,
b'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<assembly xmlns='
b'"urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">\n <trustInfo x'
b'mlns="urn:schemas-microsoft-com:asm.v3">\n <security>\n <requested'
b'Privileges>\n <requestedExecutionLevel level="asInvoker" uiAccess='
b'"false"/>\n </requestedPrivileges>\n </security>\n </trustInfo>\n '
b'<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">\n <'
b'application>\n <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f'
b'0}"/>\n <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>\n '
b' <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>\n <s'
b'upportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>\n <supporte'
b'dOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>\n </application>\n <'
b'/compatibility>\n <application xmlns="urn:schemas-microsoft-com:asm.v3">'
b'\n <windowsSettings>\n <longPathAware xmlns="http://schemas.micros'
b'oft.com/SMI/2016/WindowsSettings">true</longPathAware>\n </windowsSett'
b'ings>\n </application>\n <dependency>\n <dependentAssembly>\n <ass'
b'emblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version='
b'"6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" langua'
b'ge="*"/>\n </dependentAssembly>\n </dependency>\n</assembly>',
True,
False,
None,
None,
None,
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\Network_Scanner.pkg',
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\PYZ-00.pyz',
'PYZ'),
('struct',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('pyi_rth_inspect',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('network_tester',
'C:\\Code\\Projects\\Network_Tester\\network_tester.py',
'PYSOURCE'),
('python313.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\python313.dll',
'BINARY'),
('_multiprocessing.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_ssl.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ssl.pyd',
'EXTENSION'),
('_hashlib.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_hashlib.pyd',
'EXTENSION'),
('unicodedata.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\unicodedata.pyd',
'EXTENSION'),
('_decimal.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_decimal.pyd',
'EXTENSION'),
('select.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\select.pyd',
'EXTENSION'),
('_lzma.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_lzma.pyd',
'EXTENSION'),
('_bz2.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_bz2.pyd',
'EXTENSION'),
('_ctypes.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ctypes.pyd',
'EXTENSION'),
('_queue.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_queue.pyd',
'EXTENSION'),
('_socket.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_socket.pyd',
'EXTENSION'),
('_wmi.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_wmi.pyd',
'EXTENSION'),
('VCRUNTIME140.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140.dll',
'BINARY'),
('libssl-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libssl-3.dll',
'BINARY'),
('libcrypto-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libcrypto-3.dll',
'BINARY'),
('libffi-8.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libffi-8.dll',
'BINARY'),
('VCRUNTIME140_1.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140_1.dll',
'BINARY'),
('base_library.zip',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\base_library.zip',
'DATA')],
[],
False,
False,
1783492388,
[('run.exe',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
'EXECUTABLE')],
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\python313.dll')

View File

@@ -1,112 +0,0 @@
('C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\Network_Scanner.pkg',
{'BINARY': True,
'DATA': True,
'EXECUTABLE': True,
'EXTENSION': True,
'PYMODULE': True,
'PYSOURCE': True,
'PYZ': False,
'SPLASH': True,
'SYMLINK': False},
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\PYZ-00.pyz',
'PYZ'),
('struct',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('pyi_rth_inspect',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('network_tester',
'C:\\Code\\Projects\\Network_Tester\\network_tester.py',
'PYSOURCE'),
('python313.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\python313.dll',
'BINARY'),
('_multiprocessing.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_ssl.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ssl.pyd',
'EXTENSION'),
('_hashlib.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_hashlib.pyd',
'EXTENSION'),
('unicodedata.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\unicodedata.pyd',
'EXTENSION'),
('_decimal.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_decimal.pyd',
'EXTENSION'),
('select.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\select.pyd',
'EXTENSION'),
('_lzma.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_lzma.pyd',
'EXTENSION'),
('_bz2.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_bz2.pyd',
'EXTENSION'),
('_ctypes.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ctypes.pyd',
'EXTENSION'),
('_queue.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_queue.pyd',
'EXTENSION'),
('_socket.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_socket.pyd',
'EXTENSION'),
('_wmi.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_wmi.pyd',
'EXTENSION'),
('VCRUNTIME140.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140.dll',
'BINARY'),
('libssl-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libssl-3.dll',
'BINARY'),
('libcrypto-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libcrypto-3.dll',
'BINARY'),
('libffi-8.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libffi-8.dll',
'BINARY'),
('VCRUNTIME140_1.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140_1.dll',
'BINARY'),
('base_library.zip',
'C:\\Code\\Projects\\Network_Tester\\build\\Network_Scanner\\base_library.zip',
'DATA')],
'python313.dll',
False,
False,
False,
[],
None,
None,
None)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,50 +0,0 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean these modules are required for running your program. Both
Python's standard library and 3rd-party Python packages often conditionally
import optional modules, some of which may be available only on certain
platforms.
Types of import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named termios - imported by tty (top-level), _pyrepl.pager (delayed, optional), getpass (optional)
missing module named pwd - imported by posixpath (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib._local (optional), subprocess (delayed, conditional, optional), http.server (delayed, optional), getpass (delayed, optional), netrc (delayed, optional)
missing module named 'collections.abc' - imported by traceback (top-level), typing (top-level), inspect (top-level), logging (top-level), importlib.resources.readers (top-level), selectors (top-level), tracemalloc (top-level), http.client (top-level), configparser (top-level), markdown_it.main (top-level), markdown_it.ruler (top-level), markdown_it.utils (top-level), markdown_it.token (top-level), markdown_it.common.normalize_url (top-level), mdurl._decode (top-level), mdurl._encode (top-level), markdown_it._punycode (top-level), markdown_it.parser_block (top-level), markdown_it.rules_block.fence (top-level), markdown_it.parser_core (top-level), markdown_it.parser_inline (top-level), markdown_it.renderer (top-level), rich.scope (top-level)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib._local (optional), subprocess (delayed, conditional, optional)
missing module named posix - imported by os (conditional, optional), posixpath (optional), shutil (conditional), importlib._bootstrap_external (conditional)
missing module named resource - imported by posix (top-level)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named pyimod02_importers - imported by C:\Code\Projects\Network_Tester\.venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed)
missing module named pygments.lexers.PrologLexer - imported by pygments.lexers (top-level), pygments.lexers.cplint (top-level)
missing module named _winreg - imported by pygments.formatters.img (optional)
missing module named PIL - imported by pygments.formatters.img (optional)
missing module named ctags - imported by pygments.formatters.html (optional)
missing module named chardet - imported by pygments.lexer (delayed, conditional, optional)
missing module named ipywidgets - imported by rich.live (delayed, conditional, optional)
missing module named 'IPython.display' - imported by rich.live (delayed, conditional, optional)
missing module named typing_extensions - imported by markdown_it.utils (conditional), rich.live (conditional)
missing module named fcntl - imported by subprocess (optional), pty (delayed, optional)
missing module named IPython - imported by rich.jupyter (delayed, optional)
missing module named 'IPython.core' - imported by rich.pretty (delayed, optional)
missing module named attr - imported by rich.pretty (optional)
missing module named linkify_it - imported by markdown_it.main (optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named 'java.lang' - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,134 +0,0 @@
('C:\\Code\\Projects\\Network_Tester\\dist\\network_tester.exe',
True,
False,
False,
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\bootloader\\images\\icon-console.ico',
None,
False,
False,
b'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<assembly xmlns='
b'"urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">\n <trustInfo x'
b'mlns="urn:schemas-microsoft-com:asm.v3">\n <security>\n <requested'
b'Privileges>\n <requestedExecutionLevel level="asInvoker" uiAccess='
b'"false"/>\n </requestedPrivileges>\n </security>\n </trustInfo>\n '
b'<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">\n <'
b'application>\n <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f'
b'0}"/>\n <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>\n '
b' <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>\n <s'
b'upportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>\n <supporte'
b'dOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>\n </application>\n <'
b'/compatibility>\n <application xmlns="urn:schemas-microsoft-com:asm.v3">'
b'\n <windowsSettings>\n <longPathAware xmlns="http://schemas.micros'
b'oft.com/SMI/2016/WindowsSettings">true</longPathAware>\n </windowsSett'
b'ings>\n </application>\n <dependency>\n <dependentAssembly>\n <ass'
b'emblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version='
b'"6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" langua'
b'ge="*"/>\n </dependentAssembly>\n </dependency>\n</assembly>',
True,
False,
None,
None,
None,
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\network_tester.pkg',
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\PYZ-00.pyz',
'PYZ'),
('struct',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('pyi_rth_inspect',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('network_tester',
'C:\\Code\\Projects\\Network_Tester\\network_tester.py',
'PYSOURCE'),
('python313.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\python313.dll',
'BINARY'),
('_multiprocessing.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('unicodedata.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\unicodedata.pyd',
'EXTENSION'),
('_decimal.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_decimal.pyd',
'EXTENSION'),
('_hashlib.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_hashlib.pyd',
'EXTENSION'),
('_lzma.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_lzma.pyd',
'EXTENSION'),
('_bz2.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_bz2.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_ssl.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ssl.pyd',
'EXTENSION'),
('select.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\select.pyd',
'EXTENSION'),
('_ctypes.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ctypes.pyd',
'EXTENSION'),
('_queue.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_queue.pyd',
'EXTENSION'),
('_socket.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_socket.pyd',
'EXTENSION'),
('_wmi.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_wmi.pyd',
'EXTENSION'),
('VCRUNTIME140.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140.dll',
'BINARY'),
('libcrypto-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libcrypto-3.dll',
'BINARY'),
('libssl-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libssl-3.dll',
'BINARY'),
('libffi-8.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libffi-8.dll',
'BINARY'),
('VCRUNTIME140_1.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140_1.dll',
'BINARY'),
('base_library.zip',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\base_library.zip',
'DATA')],
[],
False,
False,
1783464119,
[('run.exe',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe',
'EXECUTABLE')],
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\python313.dll')

View File

@@ -1,112 +0,0 @@
('C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\network_tester.pkg',
{'BINARY': True,
'DATA': True,
'EXECUTABLE': True,
'EXTENSION': True,
'PYMODULE': True,
'PYSOURCE': True,
'PYZ': False,
'SPLASH': True,
'SYMLINK': False},
[('pyi-contents-directory _internal', '', 'OPTION'),
('PYZ-00.pyz',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\PYZ-00.pyz',
'PYZ'),
('struct',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\struct.pyc',
'PYMODULE'),
('pyimod01_archive',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod01_archive.pyc',
'PYMODULE'),
('pyimod02_importers',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod02_importers.pyc',
'PYMODULE'),
('pyimod03_ctypes',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod03_ctypes.pyc',
'PYMODULE'),
('pyimod04_pywin32',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\localpycs\\pyimod04_pywin32.pyc',
'PYMODULE'),
('pyiboot01_bootstrap',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\loader\\pyiboot01_bootstrap.py',
'PYSOURCE'),
('pyi_rth_inspect',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py',
'PYSOURCE'),
('pyi_rth_pkgutil',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_pkgutil.py',
'PYSOURCE'),
('pyi_rth_multiprocessing',
'C:\\Code\\Projects\\Network_Tester\\.venv\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_multiprocessing.py',
'PYSOURCE'),
('network_tester',
'C:\\Code\\Projects\\Network_Tester\\network_tester.py',
'PYSOURCE'),
('python313.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\python313.dll',
'BINARY'),
('_multiprocessing.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_multiprocessing.pyd',
'EXTENSION'),
('unicodedata.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\unicodedata.pyd',
'EXTENSION'),
('_decimal.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_decimal.pyd',
'EXTENSION'),
('_hashlib.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_hashlib.pyd',
'EXTENSION'),
('_lzma.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_lzma.pyd',
'EXTENSION'),
('_bz2.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_bz2.pyd',
'EXTENSION'),
('pyexpat.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\pyexpat.pyd',
'EXTENSION'),
('_ssl.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ssl.pyd',
'EXTENSION'),
('select.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\select.pyd',
'EXTENSION'),
('_ctypes.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_ctypes.pyd',
'EXTENSION'),
('_queue.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_queue.pyd',
'EXTENSION'),
('_socket.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_socket.pyd',
'EXTENSION'),
('_wmi.pyd',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\_wmi.pyd',
'EXTENSION'),
('VCRUNTIME140.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140.dll',
'BINARY'),
('libcrypto-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libcrypto-3.dll',
'BINARY'),
('libssl-3.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libssl-3.dll',
'BINARY'),
('libffi-8.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\DLLs\\libffi-8.dll',
'BINARY'),
('VCRUNTIME140_1.dll',
'C:\\Users\\e.cruz\\AppData\\Local\\Programs\\Python\\Python313\\VCRUNTIME140_1.dll',
'BINARY'),
('base_library.zip',
'C:\\Code\\Projects\\Network_Tester\\build\\network_tester\\base_library.zip',
'DATA')],
'python313.dll',
False,
False,
False,
[],
None,
None,
None)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,50 +0,0 @@
This file lists modules PyInstaller was not able to find. This does not
necessarily mean these modules are required for running your program. Both
Python's standard library and 3rd-party Python packages often conditionally
import optional modules, some of which may be available only on certain
platforms.
Types of import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
missing module named 'collections.abc' - imported by traceback (top-level), typing (top-level), inspect (top-level), logging (top-level), importlib.resources.readers (top-level), selectors (top-level), tracemalloc (top-level), http.client (top-level), configparser (top-level), markdown_it.main (top-level), markdown_it.ruler (top-level), markdown_it.utils (top-level), markdown_it.token (top-level), markdown_it.common.normalize_url (top-level), mdurl._decode (top-level), mdurl._encode (top-level), markdown_it._punycode (top-level), markdown_it.parser_block (top-level), markdown_it.rules_block.fence (top-level), markdown_it.parser_core (top-level), markdown_it.parser_inline (top-level), markdown_it.renderer (top-level), rich.scope (top-level)
missing module named pwd - imported by posixpath (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib._local (optional), subprocess (delayed, conditional, optional), http.server (delayed, optional), getpass (delayed, optional), netrc (delayed, optional)
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib._local (optional), subprocess (delayed, conditional, optional)
missing module named posix - imported by posixpath (optional), shutil (conditional), importlib._bootstrap_external (conditional), os (conditional, optional)
missing module named resource - imported by posix (top-level)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named termios - imported by tty (top-level), _pyrepl.pager (delayed, optional), getpass (optional)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named pyimod02_importers - imported by C:\Code\Projects\Network_Tester\.venv\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed)
missing module named pygments.lexers.PrologLexer - imported by pygments.lexers (top-level), pygments.lexers.cplint (top-level)
missing module named _winreg - imported by pygments.formatters.img (optional)
missing module named PIL - imported by pygments.formatters.img (optional)
missing module named ctags - imported by pygments.formatters.html (optional)
missing module named chardet - imported by pygments.lexer (delayed, conditional, optional)
missing module named ipywidgets - imported by rich.live (delayed, conditional, optional)
missing module named 'IPython.display' - imported by rich.live (delayed, conditional, optional)
missing module named typing_extensions - imported by markdown_it.utils (conditional), rich.live (conditional)
missing module named fcntl - imported by subprocess (optional), pty (delayed, optional)
missing module named IPython - imported by rich.jupyter (delayed, optional)
missing module named 'IPython.core' - imported by rich.pretty (delayed, optional)
missing module named attr - imported by rich.pretty (optional)
missing module named linkify_it - imported by markdown_it.main (optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named 'java.lang' - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +0,0 @@
name,hostname,port,ping_status,port_status,timestamp
Test,192.168.1.81,502,OFFLINE,CLOSED,2026-07-08 09:49:15
Test2,192.168.1.82,502,OFFLINE,CLOSED,2026-07-08 09:49:15
Test3,192.168.1.83,502,OFFLINE,CLOSED,2026-07-08 09:49:15
Test3r,192.168.1.84,502,OFFLINE,CLOSED,2026-07-08 09:49:15
1 name hostname port ping_status port_status timestamp
2 Test 192.168.1.81 502 OFFLINE CLOSED 2026-07-08 09:49:15
3 Test2 192.168.1.82 502 OFFLINE CLOSED 2026-07-08 09:49:15
4 Test3 192.168.1.83 502 OFFLINE CLOSED 2026-07-08 09:49:15
5 Test3r 192.168.1.84 502 OFFLINE CLOSED 2026-07-08 09:49:15

Binary file not shown.

View File

@@ -1,5 +0,0 @@
name,enabled,hostname,port,reverseWordOrder,zeroBasedAddressing
Test,false,192.168.1.81,502,true,true
Test2,true,192.168.1.82,502,false,false
Test3,false,192.168.1.83,502,true,true
Test3r,false,192.168.1.84,502,true,true
1 name enabled hostname port reverseWordOrder zeroBasedAddressing
2 Test false 192.168.1.81 502 true true
3 Test2 true 192.168.1.82 502 false false
4 Test3 false 192.168.1.83 502 true true
5 Test3r false 192.168.1.84 502 true true

BIN
dist/dispositivos.zip vendored

Binary file not shown.

View File

@@ -1,38 +0,0 @@
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['network_tester.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='network_tester',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)

0
src/__init__.py Normal file
View File

View File

@@ -2,8 +2,7 @@ import csv
import os
import sys
import platform
import socket
import subprocess
import utils.network as network_utils
from concurrent.futures import ThreadPoolExecutor
from datetime import datetime
from rich.console import Console
@@ -13,53 +12,7 @@ from rich.live import Live
# Configure the console
console = Console()
def check_ping(hostname):
"""Ping the hostname detecting the current OS."""
# -n for Windows, -c for Linux/macOS. 1sec / 1000ms Timeout.
param = '-n' if platform.system().lower() == 'windows' else '-c'
timeout_param = '-w' if platform.system().lower() == 'windows' else '-W'
timeout_value = '1000' if platform.system().lower() == 'windows' else '1'
command = ['ping', param, '1', timeout_param, timeout_value, hostname]
try:
# Return True if the exit code is 0
return subprocess.call(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) == 0
except Exception:
return False
def check_port(hostname, port):
"""Try to open the TCP connection using the specified port."""
try:
port = int(port)
except (ValueError, TypeError):
return False # invalid port
try:
with socket.create_connection((hostname, port), timeout=1.5) as sock:
return True
except (socket.timeout, ConnectionRefusedError, OSError):
return False
def check_device(device):
"""Execute both test for one device."""
name = device['name']
hostname = device['hostname']
port = device['port']
ping_ok = check_ping(hostname)
port_ok = check_port(hostname, port) if port else False
return {
'name': name,
'hostname': hostname,
'port': port if port else 'N/A',
'ping': '[green]ONLINE[/green]' if ping_ok else '[red]OFFLINE[/red]',
'port_status': '[green]OPEN[/green]' if port_ok else '[red]CLOSED[/red]' if port else 'N/A',
# Store clean strings for the final CSV export
'raw_ping': 'ONLINE' if ping_ok else 'OFFLINE',
'raw_port': 'OPEN' if port_ok else 'CLOSED' if port else 'N/A'
}
def save_to_csv(results):
"""Export the results to a new CSV file."""
@@ -126,7 +79,7 @@ def main():
# Update the table UI dynamically using Rich Live display
with Live(table, refresh_per_second=4):
with ThreadPoolExecutor(max_workers=30) as executor:
futures = [executor.submit(check_device, dev) for dev in devices]
futures = [executor.submit(network_utils.check_device, dev) for dev in devices]
for future in futures:
res = future.result()

0
src/utils/__init__.py Normal file
View File

51
src/utils/network.py Normal file
View File

@@ -0,0 +1,51 @@
import socket
import subprocess
import platform
def check_ping(hostname):
"""Ping the hostname detecting the current OS."""
# -n for Windows, -c for Linux/macOS. 1sec / 1000ms Timeout.
param = '-n' if platform.system().lower() == 'windows' else '-c'
timeout_param = '-w' if platform.system().lower() == 'windows' else '-W'
timeout_value = '1000' if platform.system().lower() == 'windows' else '1'
command = ['ping', param, '1', timeout_param, timeout_value, hostname]
try:
# Return True if the exit code is 0
return subprocess.call(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) == 0
except Exception:
return False
def check_port(hostname, port):
"""Try to open the TCP connection using the specified port."""
try:
port = int(port)
except (ValueError, TypeError):
return False # invalid port
try:
with socket.create_connection((hostname, port), timeout=1.5) as sock:
return True
except (socket.timeout, ConnectionRefusedError, OSError):
return False
def check_device(device):
"""Execute both test for one device."""
name = device['name']
hostname = device['hostname']
port = device['port']
ping_ok = check_ping(hostname)
port_ok = check_port(hostname, port) if port else False
return {
'name': name,
'hostname': hostname,
'port': port if port else 'N/A',
'ping': '[green]ONLINE[/green]' if ping_ok else '[red]OFFLINE[/red]',
'port_status': '[green]OPEN[/green]' if port_ok else '[red]CLOSED[/red]' if port else 'N/A',
# Store clean strings for the final CSV export
'raw_ping': 'ONLINE' if ping_ok else 'OFFLINE',
'raw_port': 'OPEN' if port_ok else 'CLOSED' if port else 'N/A'
}

0
tests/__init__.py Normal file
View File