Initial commit: Production-ready CLI network tester

This commit is contained in:
Emmanuel HC
2026-07-08 10:22:30 -05:00
commit 2d476c0539
38 changed files with 55231 additions and 0 deletions

0
.gitignore vendored Normal file
View File

38
Network_Scanner.spec Normal file
View File

@@ -0,0 +1,38 @@
# -*- 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,
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,134 @@
('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')

Binary file not shown.

View File

@@ -0,0 +1,112 @@
('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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,50 @@
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

@@ -0,0 +1,134 @@
('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

@@ -0,0 +1,112 @@
('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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,50 @@
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

5
devices.csv Normal file
View File

@@ -0,0 +1,5 @@
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

5
dist/2607080949_Results.csv vendored Normal file
View File

@@ -0,0 +1,5 @@
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

BIN
dist/Network_Scanner.exe vendored Normal file

Binary file not shown.

5
dist/dispositivos.csv vendored Normal file
View File

@@ -0,0 +1,5 @@
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 Normal file

Binary file not shown.

146
network_tester.py Normal file
View File

@@ -0,0 +1,146 @@
import csv
import os
import sys
import platform
import socket
import subprocess
from concurrent.futures import ThreadPoolExecutor
from datetime import datetime
from rich.console import Console
from rich.table import Table
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."""
fieldnames = ['name', 'hostname', 'port', 'ping_status', 'port_status', 'timestamp']
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
name_ts = datetime.now().strftime('%y%m%d%H%M')
output_filename = "%s_Results.csv" % name_ts
try:
with open(output_filename, mode='w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for r in results:
writer.writerow({
'name': r['name'],
'hostname': r['hostname'],
'port': r['port'],
'ping_status': r['raw_ping'],
'port_status': r['raw_port'],
'timestamp': timestamp
})
console.print(f"\n[bold green]✓[/bold green] Results exported to file: [cyan]{output_filename}[/cyan]")
except Exception as e:
console.print(f"\n[bold red]Error saving CSV file:[/bold red] {e}")
def main():
# Subtle header decoration for the brand identity
if len(sys.argv) > 1:
input_file = sys.argv[1]
else:
input_file = 'devices.csv'
if not os.path.exists(input_file):
console.print(f"[bold red]Error:[/bold red] Input file could not be found: '{input_file}'")
return
# Read target devices from CSV
devices = []
with open(input_file, encoding='utf-8', errors='ignore') as f:
reader = csv.DictReader(f)
for row in reader:
devices.append(row)
results = []
try:
while True:
os.system('cls' if platform.system().lower() == 'windows' else 'clear') # Clear the console for each iteration
console.clear()
# Real-time console interface header
console.print("\nNetwork Connection Tester - [bold blue]Prime Controls[/bold blue] [dim]v1.0.0[/dim]")
console.print("[dim]Developed by Emmanuel Hernandez Cruz | Automation Specialist II[/dim]\n")
console.print(f"\n[bold cyan]●[/bold cyan] Testing {len(devices)} network connections...")
console.print("Press [bold yellow]Ctrl + C[/bold yellow] to [bold red]stop[/bold red] monitoring and export results.\n")
# Create dynamic table to show the results in real time
table = Table(title="Realtime Network Status:")
table.add_column("Name", justify="left", style="cyan")
table.add_column("Hostname/IP", justify="left")
table.add_column("Port", justify="center", style="magenta")
table.add_column("Ping Status", justify="center")
table.add_column("Port Status", justify="center")
results = [] # Reset results for each iteration
# 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]
for future in futures:
res = future.result()
results.append(res)
# Add row to the table
table.add_row(res['name'], res['hostname'], str(res['port']), res['ping'], res['port_status'])
import time
time.sleep(5) # Wait for 5 seconds before the next iteration
except KeyboardInterrupt:
console.print("\n[bold yellow]<!>[/bold yellow] Monitoring stopped by user.")
# Generate final report
save_to_csv(results)
console.print("\n[dim]Press Enter to close this window...[/dim]", end="")
input()
if __name__ == '__main__':
main()

38
network_tester.spec Normal file
View File

@@ -0,0 +1,38 @@
# -*- 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,
)

BIN
requirementst.txt Normal file

Binary file not shown.