Skip to main content

A python package that allows connecting and sending commands direcly to a proxmox node/lxc via vnc websocket.

Project description

ProxVNC

ProxVNC allows connecting and executing arbitrary commands directly on a Proxmox node/LXC via VNC WebSocket.

Installation

This package can be installed via PyPI:

pip install ProxVNC

Usage information

See the Examples folder for additional working examples.

Connecting via proxmoxer package:

First, create an object to connect to your Proxmox server. For more info read PROXMOXER documentation. All authentication methods are supported.. If you use an Api token you must set the permission to [Sys.console]

from ProxVNC.proxmoxer import ProxmoxAPI
from ProxVNC import ProxVNC
  
proxmox = ProxmoxAPI(host="<proxmox_host:port>", # ex: 10.0.0.1:8006
                         user="<username@realm>", # ex: "root@pam"
                         password="<password>",
                         otp=input("OTP: "),
                         verify_ssl=False)

Create a ProxVNC object and pass the proxmoxer connection via the api parameter. Optionally, specify which node to connect to.

    client = ProxVNC(api=proxmox, node="pve") # specify node if needed, otherwise first node is used by default
  
    client.connect()  

You are now connected! Here is a simple example of interacting with the terminal:

    print(client.readTerm())
    # --- Interact with terminal ---
    while True:
        cmd = input("Enter a command: ")

        if cmd.lower() in ["exit", "quit"]: # Keywords to exit
            break

        client.execCommand(cmd) # Execute the command
  
        print(client.readTerm()) # Read the terminal

    client.disconnect() # Don't forget to disconnect when you're done

Connecting direcly with a shell ticket:

You can also connect to the VNC terminal directly by POSTing to the Proxmox termproxy endpoint

In this example, PROXMOXER is used to call Proxmox API endpoints, but you can use requests or another package.

    proxmox = ProxmoxAPI(host="<proxmox_host:port>", # ex: 10.0.0.1:8006
                         user="", # ex: "root@pam"
                         password="<password>",
                         otp=input("OTP: "),
                         verify_ssl=False)
  
    termproxy = proxmox.nodes("pve").termproxy.post() # POST to termproxy with the node you want to connect to
  
    # Get shell ticket and port
    shell_ticket = termproxy["ticket"] 
    shell_port = termproxy["port"]

    pve_cookie, _ = proxmox.get_tokens() # Get cookie token

Once you have the required data, create the ProxVNC object manually:

    client = ProxVNC(
             url="https://<proxmox_host:port>",
             node="pve",
             user="<username@realm>",
             shell_port=shell_port,
             shell_ticket=shell_ticket,
             pve_auth_cookie=pve_cookie
            )  

     client.connect()

You can now start sending and receiving commands.

Contributing

We welcome contributions! Here’s how you can help:

  1. Fork the repository and create a new branch for your feature or bug fix.
  2. Make your changes and ensure the code is clean and well-documented.
  3. Test your changes thoroughly before submitting.
  4. Open a pull request with a clear description of your changes.

Please follow PEP8 coding style and include examples if applicable.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

proxvnc-1.0.4.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

proxvnc-1.0.4-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file proxvnc-1.0.4.tar.gz.

File metadata

  • Download URL: proxvnc-1.0.4.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for proxvnc-1.0.4.tar.gz
Algorithm Hash digest
SHA256 96fb8355e9acdf8a77985d7bc2310e79f202219e7659bee8b3ab1d83447faa66
MD5 53469e653e1df2b4d76be4785b2d8565
BLAKE2b-256 dd12a2106ca376d41d8879c67221fce68e09aa94f7256a0eeb4777c22dd8c7a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for proxvnc-1.0.4.tar.gz:

Publisher: python-publish.yml on xgiralt64/ProxVNC

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file proxvnc-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: proxvnc-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for proxvnc-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e9d93ba8ec37be11ef01111bce3109e8e02c55ebba1d6d5ea097b2843b2a0e91
MD5 ce35703e3584abe8445fc133e239b292
BLAKE2b-256 e318fd0452aed97f7b65a66176baabdf3596e334ed17bee3a3a41ffb4f1750fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for proxvnc-1.0.4-py3-none-any.whl:

Publisher: python-publish.yml on xgiralt64/ProxVNC

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page