summaryrefslogtreecommitdiff
path: root/examples/mscp-python.py
blob: d1cb856bb22bb233d64283dfe735f149dd31073c (plain)
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
#!/usr/bin/env python3
"""mscp.py

An example python script running mscp
"""

import argparse
import time
import sys

from rich.progress import Progress

import mscp

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-f", "--from", dest = "fr",
                        metavar = "REMOTE", default = None,
                        help = "copy a file from this remote host")
    parser.add_argument("-t", "--to", metavar = "REMOTE", default = None,
                        help = "copy a file to this remote host")
    parser.add_argument("source", help = "path to source file to be copied")
    parser.add_argument("destination", help = "path of copy destination")

    args = parser.parse_args()

    if args.fr and args.to:
        print("-f and -t are exclusive", file = sys.stderr)
        sys.exit(1)
    elif args.fr:
        d = mscp.REMOTE2LOCAL
        remote = args.fr
    elif args.to:
        d = mscp.LOCAL2REMOTE
        remote = args.to
    else:
        print("-f or -t must be specified", file = sys.stderr)
        sys.exit(1)


    m = mscp.mscp(remote, d)
    m.connect()
    m.add_src_path(args.source)
    m.set_dst_path(args.destination)
    m.scan()
    m.start()

    total, done, finished = m.stats()
    with Progress() as progress:

        task = progress.add_task("[green]Copying...", total = total)

        while not progress.finished:
            total, done, finished = m.stats()
            progress.update(task, completed = done)
            time.sleep(0.5)

    m.join()
    m.cleanup()


if __name__ == "__main__":
    main()