-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathserver.py
78 lines (64 loc) · 1.73 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import argparse
import logging
import asyncio
import sys
import asyncssh
from network_server.asyncssh_server import start_server
import concurrent.futures
def _parse_args():
""" Entrypoint
"""
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument(
"-b",
"--base-port",
default=2200,
type=int,
help="Base port for the SSH server.",
)
parser.add_argument(
"-d",
"--directory",
default="./examples/configs",
help="The path to the device/commands directories.",
)
parser.add_argument(
"-p",
"--password",
default=None,
help="The SSH server authentication password.",
)
parser.add_argument(
"-e",
"--enable-plugins",
type=lambda s: [item for item in s.split(",")],
help="The plugins that should be enabled",
default="confmode,help,history,showfs",
)
parser.add_argument(
"-u", "--username", help="The SSH server authentication username."
)
parser.add_argument(
"-c",
"--server-count",
default=1,
type=int,
help="The number of SSH servers to start.",
)
parser.add_argument(
"-k", "--ssh_key", help="Server side SSH key file path", required=True
)
args = parser.parse_args()
return args
def main():
args = _parse_args()
loop = asyncio.get_event_loop()
for item in range(0, args.server_count):
loop.create_task(start_server(args.base_port + item, **vars(args)))
loop.run_forever()
if __name__ == "__main__":
LOGGER = logging.getLogger()
logging.basicConfig(level=logging.DEBUG)
main()