mirror of
https://github.com/aaiyer/rfoo.git
synced 2025-04-18 03:27:36 +03:00
75 lines
1.5 KiB
Python
75 lines
1.5 KiB
Python
#! /usr/bin/env python
|
|
"""
|
|
rconsole
|
|
|
|
A Python console you can embed in a program and attach to remotely.
|
|
|
|
To spawn a Python console in a script do the following in global scope
|
|
only (!) of any module:
|
|
|
|
from rfoo.utils import rconsole
|
|
rconsole.spawn_server()
|
|
|
|
This will start a listener for connections in a new thread. You may
|
|
specify a port to listen on.
|
|
|
|
To attach to the console from another shell use the rconsole script
|
|
(rfoo/scripts/rconsole).
|
|
|
|
SECURITY NOTE:
|
|
The listener started with spawn_server() will accept any local
|
|
connection and may therefore be insecure to use in shared hosting
|
|
or similar environments!
|
|
"""
|
|
|
|
|
|
import getopt
|
|
import sys
|
|
import os
|
|
|
|
import rfoo.utils.rconsole as rconsole
|
|
|
|
|
|
def print_usage():
|
|
scriptName = os.path.basename(sys.argv[0])
|
|
sys.stdout.write("""
|
|
Start remote console:
|
|
%(name)s [-h] [-pPORT]
|
|
|
|
-h, --help Print this help.
|
|
-pPORT Set PORT.
|
|
""" % {'name': scriptName})
|
|
|
|
|
|
def main():
|
|
"""Parse options and run script."""
|
|
|
|
try:
|
|
options, args = getopt.getopt(
|
|
sys.argv[1:],
|
|
'hp:',
|
|
['help']
|
|
)
|
|
options = dict(options)
|
|
|
|
except getopt.GetoptError:
|
|
print_usage()
|
|
return 2
|
|
|
|
if '-h' in options or '--help' in options:
|
|
print_usage()
|
|
return
|
|
|
|
if '-p' in options:
|
|
port = int(options.get('-p'))
|
|
else:
|
|
port = rconsole.PORT
|
|
|
|
rconsole.interact(port=port)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|
|
|