Add features:
- New protocols: Docker and Kubectl - Add contexts to filter the number of nodes - Add option to modify the api using plugins - Minor bug fixes
This commit is contained in:
+32
-16
@@ -2,32 +2,35 @@
|
||||
'''
|
||||
## Connection manager
|
||||
|
||||
Connpy is a connection manager that allows you to store nodes to connect them fast and password free.
|
||||
Connpy is a SSH, SFTP, Telnet, kubectl, and Docker pod connection manager and automation module for Linux, Mac, and Docker.
|
||||
|
||||
### Features
|
||||
- You can generate profiles and reference them from nodes using @profilename so you dont
|
||||
need to edit multiple nodes when changing password or other information.
|
||||
- Nodes can be stored on @folder or @subfolder@folder to organize your devices. Then can
|
||||
be referenced using node@subfolder@folder or node@folder
|
||||
- If you have too many nodes. Get completion script using: conn config --completion.
|
||||
Or use fzf installing pyfzf and running conn config --fzf true
|
||||
- Create in bulk, copy, move, export and import nodes for easy management.
|
||||
- Run automation scripts in network devices.
|
||||
- use GPT AI to help you manage your devices.
|
||||
- Manage connections using SSH, SFTP, Telnet, kubectl, and Docker exec.
|
||||
- Set contexts to manage specific nodes from specific contexts (work/home/clients/etc).
|
||||
- You can generate profiles and reference them from nodes using @profilename so you don't
|
||||
need to edit multiple nodes when changing passwords or other information.
|
||||
- Nodes can be stored on @folder or @subfolder@folder to organize your devices. They can
|
||||
be referenced using node@subfolder@folder or node@folder.
|
||||
- If you have too many nodes, get a completion script using: conn config --completion.
|
||||
Or use fzf by installing pyfzf and running conn config --fzf true.
|
||||
- Create in bulk, copy, move, export, and import nodes for easy management.
|
||||
- Run automation scripts on network devices.
|
||||
- Use GPT AI to help you manage your devices.
|
||||
- Add plugins with your own scripts.
|
||||
- Much more!
|
||||
|
||||
### Usage
|
||||
```
|
||||
usage: conn [-h] [--add | --del | --mod | --show | --debug] [node|folder] [--sftp]
|
||||
conn {profile,move,mv,copy,cp,list,ls,bulk,export,import,ai,run,api,plugin,config} ...
|
||||
conn {profile,move,mv,copy,cp,list,ls,bulk,export,import,ai,run,api,plugin,config,sync,context} ...
|
||||
|
||||
positional arguments:
|
||||
node|folder node[@subfolder][@folder]
|
||||
Connect to specific node or show all matching nodes
|
||||
[@subfolder][@folder]
|
||||
Show all available connections globaly or in specified path
|
||||
Options:
|
||||
node|folder node[@subfolder][@folder]
|
||||
Connect to specific node or show all matching nodes
|
||||
[@subfolder][@folder]
|
||||
Show all available connections globally or in specified path
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-v, --version Show version
|
||||
-a, --add Add new node[@subfolder][@folder] or [@subfolder]@folder
|
||||
@@ -51,6 +54,7 @@ Commands:
|
||||
plugin Manage plugins
|
||||
config Manage app config
|
||||
sync Sync config with Google
|
||||
context Manage contexts with regex matching
|
||||
```
|
||||
|
||||
### Manage profiles
|
||||
@@ -71,14 +75,26 @@ options:
|
||||
|
||||
### Examples
|
||||
```
|
||||
#Add new profile
|
||||
conn profile --add office-user
|
||||
#Add new folder
|
||||
conn --add @office
|
||||
#Add new subfolder
|
||||
conn --add @datacenter@office
|
||||
#Add node to subfolder
|
||||
conn --add server@datacenter@office
|
||||
#Add node to folder
|
||||
conn --add pc@office
|
||||
#Show node information
|
||||
conn --show server@datacenter@office
|
||||
#Connect to nodes
|
||||
conn pc@office
|
||||
conn server
|
||||
#Create and set new context
|
||||
conn context -a office .*@office
|
||||
conn context --set office
|
||||
#Run a command in a node
|
||||
conn run server ls -la
|
||||
```
|
||||
## Plugin Requirements for Connpy
|
||||
### General Structure
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
__version__ = "4.1.0b3"
|
||||
__version__ = "4.1.0"
|
||||
|
||||
|
||||
@@ -41,6 +41,9 @@ class context_manager:
|
||||
elif context not in self.contexts:
|
||||
print(f"Context {context} doesn't exist.")
|
||||
exit(4)
|
||||
if context == self.current_context:
|
||||
print(f"Can't delete current context: {self.current_context}")
|
||||
exit(5)
|
||||
else:
|
||||
self.contexts.pop(context)
|
||||
self.connapp._change_settings("contexts", self.contexts)
|
||||
@@ -152,3 +155,26 @@ class Entrypoint:
|
||||
cm.set_context(args.context_name)
|
||||
elif args.show:
|
||||
cm.show_context(args.context_name)
|
||||
|
||||
def _connpy_completion(wordsnumber, words, info=None):
|
||||
if wordsnumber == 3:
|
||||
result = ["--help", "--add", "--del", "--rm", "--ls", "--set", "--show", "--edit", "--mod"]
|
||||
elif wordsnumber == 4 and words[1] in ["--del", "-r", "--rm", "--set", "--edit", "--mod", "-e", "--show", "-s"]:
|
||||
contexts = info["config"]["config"]["contexts"].keys()
|
||||
current_context = info["config"]["config"]["current_context"]
|
||||
default_context = "all"
|
||||
|
||||
if words[1] in ["--del", "-r", "--rm"]:
|
||||
# Filter out default context and current context
|
||||
result = [context for context in contexts if context not in [default_context, current_context]]
|
||||
elif words[1] == "--set":
|
||||
# Filter out current context
|
||||
result = [context for context in contexts if context != current_context]
|
||||
elif words[1] in ["--edit", "--mod", "-e"]:
|
||||
# Filter out default context
|
||||
result = [context for context in contexts if context != default_context]
|
||||
elif words[1] in ["--show", "-s"]:
|
||||
# No filter for show
|
||||
result = list(contexts)
|
||||
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user