-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathssh.py
More file actions
45 lines (40 loc) · 945 Bytes
/
Copy pathssh.py
File metadata and controls
45 lines (40 loc) · 945 Bytes
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
#!/usr/bin/env python3
import json
from sys import argv
from dataclasses import dataclass
import paramiko
import sys
@dataclass
class User:
username: str
password: str
domain: str | None = None
netbios: str | None = None
@dataclass
class Check:
name: str
check: str
box: str
host: str
team_num: int
timeout: float | None = None
user_list: str | None = None
user: User | None = None
check_obj = None
with open(argv[1], 'r') as f:
data = json.load(f)
if "user" in data:
data["user"] = User(**data["user"])
check = Check(**data)
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(
hostname=check.host,
port=22,
username=check.user.username,
password=check.user.password,
timeout=(check.timeout * 3 / 4),
)
stdin, stdout, stderr = ssh_client.exec_command('whoami')
print(stdout.readlines())
print(stderr.readlines(), file=sys.stderr)