summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xexamples/mscp-python.py63
-rw-r--r--mscp/mscp.py4
-rw-r--r--src/pymscp.c2
3 files changed, 66 insertions, 3 deletions
diff --git a/examples/mscp-python.py b/examples/mscp-python.py
new file mode 100755
index 0000000..d1cb856
--- /dev/null
+++ b/examples/mscp-python.py
@@ -0,0 +1,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()
diff --git a/mscp/mscp.py b/mscp/mscp.py
index 30b2ce3..05ff8b0 100644
--- a/mscp/mscp.py
+++ b/mscp/mscp.py
@@ -37,7 +37,7 @@ SEVERITY_DEBUG = pymscp.SEVERITY_DEBUG
STATE_INIT = 0
STATE_CONNECTED = 1
-STATE_SCANNED = 2
+STATE_SCANNED = 2
STATE_RUNNING = 3
STATE_STOPPED = 4
STATE_JOINED = 5
@@ -47,7 +47,7 @@ STATE_RELEASED = 7
_state_str = {
STATE_INIT: "init",
STATE_CONNECTED: "connected",
- STATE_SCANNED: "scanned",
+ STATE_SCANNED: "scanned",
STATE_RUNNING: "running",
STATE_STOPPED: "stopped",
STATE_JOINED: "joined",
diff --git a/src/pymscp.c b/src/pymscp.c
index 0d92df4..c36c662 100644
--- a/src/pymscp.c
+++ b/src/pymscp.c
@@ -379,7 +379,7 @@ static PyObject *wrap_mscp_get_stats(PyObject *self, PyObject *args, PyObject *k
mscp_get_stats(m, &s);
- return Py_BuildValue("KKd", s.total, s.done, s.finished);
+ return Py_BuildValue("KKO", s.total, s.done, PyBool_FromLong(s.finished));
}
static PyObject *wrap_mscp_cleanup(PyObject *self, PyObject *args, PyObject *kw)