Skip to main content

Python Remote Console - PRC

Python Remote Console client and server communicate via sockets. PRCClient connects to PRCServer and gains access to its Python console. Everything what PRCClient types is sent and executed on PRCServer.

This can have several applications including:

  • Access to remote machine resources like files on hard drives, computation power.

  • Runtime debugging of complex Python scripts. PRCServer can be configured to access script internal variables, objects, states.

  • Remote Procedure Call (RPC). PRCClient can remotely start processes, applications, other executables on PRCServer.

PRC is writen in Python 2.7 and Python 3.x and works on Windows and Linux. Source code can be found here: https://github.com/0x1001/PRC

PRCServer usage example

PRCServer runs socket server that spawns Python console for each PRCClient.

example_server.py:

from prc import PRCServer
import time

# Creates PRCServer object
server = PRCServer()

# Example of a mutable variable
counter = [0]

# This will allow access to counter variable in PRC
server.add_variable("counter",counter)

# Starts PRCServer. Non blocking!
server.start()

# Example of worker thread that increments counter
while True:
    counter[0] += 1
    time.sleep(1)

PRCClient usage example

PRCClient connects to PRCServer console and acts as a proxy.

example_client.py:

from prc import PRCClient

# Starts PRCClient
#
# Only stderr is redirected to RPCClient output
# To redirect stdout type following code in PRCClient console:
#   import sys
#   sys.stdout = __prcconsole__
#
# Type exit() for exit.
PRCClient().start()

PRCClient client console looks like this:

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(PRCConsole)

>>> import sys
>>> sys.stdout = __prcconsole__
>>> counter
[62]

>>> counter
[64]

>>> import subprocess
>>> subprocess.call("start notepad",shell=True)
>>> exit()

PRCClient constructor accepts two input paramiters: server address and port.

Contribution

Anyone is welcome to contribute to this project. Source code is available on GitHub. https://github.com/0x1001/PRC

Release files for PRC 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PRC 1.0.0
File Size Uploaded
PRC-1.0.0.zip 23.3 kB Details

Release files / PRC-1.0.0.zip

Download URL PRC-1.0.0.zip
Size 23.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2ac6260c0d956528b88ff12926c4f5bf5cf6278b0adb191a91d3e0ccc6670a6c
BLAKE2b-256 checksum
How to use checksums
585ff956c4aece89a32a00b77d871287d599b45c1d781f6537673937625a568a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

0.9.3

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page