LuxOS Tools Repository
This package contains the luxos python package: a collection of scripts and api to operate miners running LuxOS. See the
full documentation here.
Install
To install the latest version:
$> pip install -U luxos
# to install the extra features
$> pip install -U luxos[extra]
You can check the version:
python -c "import luxos.version; print(luxos.version.get_version())"
py[3.13.0rc2], luxos[0.2.4, 08cc733ce]
Api usage
luxos provides an API in both sync and async version: full documentation here.
rexec/validate
The luxos has an extremely simple api.
For example to retrive the version info from a miner:
import asyncio
from luxos.asyncops import rexec, validate
# for a miner at 127.0.0.1 listening to port 4028 (the default)
res = await rexec("127.0.0.1", 4028, "version")
print(validate(res, "VERSION", 1, 1))
{'API': '3.7', 'CompileTime': 'Tue Sep 17 17:49:18 UTC 2024', 'LUXminer': '2024.9.17.174900-4631c4d1', 'Miner': '2024.9.17.174900', 'Type': 'Antminer S19'}
NOTE The above should be executed using
python3 -m asyncioinsteadpython3.
For a syncronous version (eg. not using asyncio):
import asyncio
from luxos.syncops import rexec, validate
res = rexec("127.0.0.1", 4028, "version")
print(validate(res, "VERSION", 1, 1)) # validate makes sure you the correct message and returns one dictionary
Yes, it only needs to import luxos.syncops instead luxos.asyncops, the api is similar (minus the async/await).
NOTE the rexec function supports also timeouts and retry. The validate check the result.
launch
The launch command can launch an arbitrary function across many miners leveraging asyncio for performance.
from luxos import utils, ips
# we'll execute and return the "version" command on miners
async def version(host, port):
res = await utils.rexec(host, port, "version")
return utils.validate(res, "VERSION", 1, 1)
# load miners ip addresses from a csv file
addresses = addresses = ips.load_ips_from_csv("miners.csv")
# run 50 version function in parallel
print(await utils.launch(addresses, version, batch=50))
[{'API': '3.7', 'CompileTime': 'Tue Sep 17 17:49:18 UTC 2024', 'LUXminer': '2024.9.17.174900-4631c4d1', 'Miner': '2024.9.17.174900', 'Type': 'Antminer S19'}]
Scripting
luxos comes with some helper scripts, to ease everyday miners' maintenance.
luxos (cli)
This will launch the version command on a miner, returning the json output:
luxos --range 127.0.0.1 --quiet --json --cmd version
The --range flag can tak as argument:
- a single ip address
--range 127.0.0.1 - a range like
--range 127.0.0.1-127.0.0.5 - or addresses from a file
--range @miners.csv.
Other examples:
# set/unset ATM
luxos --range 127.0.0.1 --quiet --json --cmd atmset --params "enabled=true"
# add a new profile
luxos --range 127.0.0.1 --quiet --json --cmd profilenew --params "myprofile,700,14.8"
luxos-run (cli)
The luxos-run allow to "run" a scriptlet on miners.
A scriptlet is a a python file such as my-script.py looking like this:
from luxos import asyncops
async def main(host: str, port: int):
res = await asyncops.rexec(host, port, "version")
return asyncops.validate(host, port, res, "VERSION")[0]
The main entry point is an async function, taking host, ip parameter: they
can execute more complex operations on a set of miners specified with the
--range flag, in the same way the luxos cli script does.
This will run my-script.py and report the results in json:
luxos-run --range 127.0.0.1 my-script.py
LuxOS HealthChecker - health_checker.py
The HealthChecker script is designed to continuously pull miner data from LuxOS, providing valuable insights into the health of your mining machines.
You can customize the HealthChecker params using the config.yaml file provided.
To run the HealthChecker you can use health-checker if you installed using pip, or
the cli python3 -m luxos.scripts.health_checker.
Feel free to explore and customize these tools to suit your specific needs. If you encounter any issues or have suggestions for improvement, please open an issue or submit a pull request.
You can find LuxOS API documentation here.
Metadata
Release files for luxos 0.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| luxos-0.2.4.tar.gz | 42.2 kB | Without provenance | Details for luxos-0.2.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| luxos-0.2.4-py3-none-any.whl | Python 3 | none | any | Details for luxos-0.2.4-py3-none-any.whl |
Total release size: 80.2 kB
Release files / luxos-0.2.4.tar.gz
| Download URL | luxos-0.2.4.tar.gz |
|---|---|
| Size | 42.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
348d9e55029780c894d5bd819bf182a72290151716428e38f6b77d957e85dec8
|
|
BLAKE2b-256 checksum How to use checksums |
f59be9203422b871521685d7675e9d0823fa3292be9a1c3b77715f3c3d3510a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Release files / luxos-0.2.4-py3-none-any.whl
| Download URL | luxos-0.2.4-py3-none-any.whl |
|---|---|
| Size | 38.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
727da9593b7f5d40afe28576e30433f57187cc3c7bf9ee6287c87aed19d54254
|
|
BLAKE2b-256 checksum How to use checksums |
25dcebc8755e25687f972ef8067b7f58a9202d2c435eb8df3ffdfbac9e6759ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Security for luxos 0.2.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.