From 42e0b233f3865a9a7a8f388c4f6ba2393c16c85c Mon Sep 17 00:00:00 2001 From: Amber Date: Mon, 27 Nov 2023 09:23:47 +0100 Subject: [PATCH] trying to use paramiki --- src/client/__pycache__/agent.cpython-39.pyc | Bin 0 -> 710 bytes src/client/agent.py | 13 ++++++++++ src/snapshot/__pycache__/snap.cpython-39.pyc | Bin 1440 -> 2188 bytes src/snapshot/snap.py | 24 ++++++++++++++++++- 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/client/__pycache__/agent.cpython-39.pyc create mode 100644 src/client/agent.py diff --git a/src/client/__pycache__/agent.cpython-39.pyc b/src/client/__pycache__/agent.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cce75a014e1009a50f755b691af6b5d28d733469 GIT binary patch literal 710 zcmYjP&2AGh5VpNPaY6$Uf-4s!q+E7s5Gn_R8dZTv6`^#?fxTE}?T}6OC)f^BqVz1mx#?rDv3oUl{C*2f;C@eF8=iMGKM= z#Zs!glqo;;-Vhb2@QSGL8%upf6Vhw_hFmgUKZ>VyspDdq$vCoh8dtTGl`KDLBaD^n z?%~s;=*BKVr7Y4yGsC@uN6KGGMJyq+Qqx^fvX zxfNs(f}VidJ{U)4^qM*EhF(%fuKgRbAtKn2S#ZfVY!_zxxz8Lve5X8XE9v zZ5`m(4PRPqww}M3>s8t<>Uu6FwGj~6Uc2E7z*6S(It|a0!6~FXoS3>43zL79PGg#w z+&_=^#$HOhiml1wUBOu5c%sFs;X>q9?u2OLSU4C$4`_#mbbbGJj?urQ zF|ro|84J;LgeYsZEYLp?;>%JNyBl*4%4|XGnY(y~`)h$(bU53_y};mJ44xbO3(Xxg an6dXcQZiVh;V*YxU*UGQkU8@yJnS#8Dykm< literal 0 HcmV?d00001 diff --git a/src/client/agent.py b/src/client/agent.py new file mode 100644 index 0000000..7ff0412 --- /dev/null +++ b/src/client/agent.py @@ -0,0 +1,13 @@ +import paramiko + +PKEY_PATH = '/home/luca/.ssh/notanamber_rsa' +HOSTNAME = '107.152.32.78' +USERNAME = 'notanamber' + +class ParaAgent(): + + def __init__(self): + pkey = paramiko.RSAKey.from_private_key_file(PKEY_PATH) + self.client = paramiko.SSHClient() + _c = self.client + _c.connect(hostname=HOSTNAME, username=USERNAME, pkey=pkey, look_for_keys=False) diff --git a/src/snapshot/__pycache__/snap.cpython-39.pyc b/src/snapshot/__pycache__/snap.cpython-39.pyc index 0eb24fdbcd7b9732fab310fed000a45e46d1cf45..5281cf8086d38ba0ce440bd06e4999783556beb1 100644 GIT binary patch delta 1083 zcmaJ>&2AGh5VpPR-OW$8Nh?~RB4mn+x}_3uMN~p+FL3Aui9=LWIkBUxl5T?60a_eI zB0a*P%CQ8skAQdw4)6wf6i$pc32l17l4m_L-+Uf(l1x9IqkM6rbXIs+ zy^;7Y=M&%@hR!hjLpRcm^pPrnWKMR6WoPZjFXt&-u9=lC>oQ^$ELRY4$Y*}tuvjS#ZsK<$z z(y3*LM82|bRPkp)`=ph^)H?*OD+eemft_X+o}3`20w~GMj>_5N8kjBE=@J;^mT-xb uaDel;h(i+KEFah8pJC3@MB?tU!`!asrcbJ@Z`VW=2MaLXHxa z8kQ2)W~QR161Eza8rBq+8m1cNG$t{I6xLp5kP4s}$fS8lCb7YEgLGsw7ac>AW3OQW z+5*%yn_(^+#15b>2v=}|FnD|%(SOAHR BME?K) diff --git a/src/snapshot/snap.py b/src/snapshot/snap.py index 92cf881..d3b67a7 100644 --- a/src/snapshot/snap.py +++ b/src/snapshot/snap.py @@ -10,10 +10,17 @@ def dcsnap(path: str, filename=None): def diffsnap(snapshot_a, snapshot_b, path='./'): + ''' + snapshot is a tree represented by dictionary {k, val} when k can be folder or file + and val can be a dictionary or an hash + + @param snapshot_a snapshot computed at time t0 + @param snapshot_b snapshot computed at time t1 + ''' for name_a, hsh_a in snapshot_a.items(): hsh_b = snapshot_b.get(name_a) if hsh_b is None: - print(f'{path}{name_a} present in snapshot_a but removed in snapshot_b, subtree {hsh_b} removed in snapshot_b') + print(f'{path}{name_a} present in snapshot_a but removed in snapshot_b, subtree {name_a} removed in snapshot_b') continue if type(hsh_a) != type(hsh_a): print(f'{path}{name_a} present in snapshot_a and in snapshot_b, but different type') @@ -32,3 +39,18 @@ def diffsnap(snapshot_a, snapshot_b, path='./'): else: print(f'{path}{name_a} present in snapshot_a and in snapshot_b, snapshot_a: {hsh_a}, snapshot_b: {hsh_b}, unchanged') +def findsubtree(snapshot, subtree, path='./'): + ''' + @param subtree dict + ''' + subtree_key = list(subtree.keys())[0] + subtree_val = list(subtree.values())[0] + + for snap_key, snap_val in snapshot.items(): + if snap_key != subtree_key: + if isinstance(snap_val, dict): + path = '%s%s/' % (path, snap_key) + findsubtree(snap_val, subtree, path) + else: + if snap_val == subtree_val: + print(f'subtree found in snapshot in path {path}')