mirror of
https://github.com/upa/mscp.git
synced 2026-05-19 11:07:28 +08:00
fix libmscp python bindings.
- fix libmscp install path by setup.py with data_files - fix return values of mscp_get_stats() - add examples directory for mscp python binding
This commit is contained in:
63
examples/mscp-python.py
Executable file
63
examples/mscp-python.py
Executable file
@@ -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()
|
||||||
@@ -37,7 +37,7 @@ SEVERITY_DEBUG = pymscp.SEVERITY_DEBUG
|
|||||||
|
|
||||||
STATE_INIT = 0
|
STATE_INIT = 0
|
||||||
STATE_CONNECTED = 1
|
STATE_CONNECTED = 1
|
||||||
STATE_SCANNED = 2
|
STATE_SCANNED = 2
|
||||||
STATE_RUNNING = 3
|
STATE_RUNNING = 3
|
||||||
STATE_STOPPED = 4
|
STATE_STOPPED = 4
|
||||||
STATE_JOINED = 5
|
STATE_JOINED = 5
|
||||||
@@ -47,7 +47,7 @@ STATE_RELEASED = 7
|
|||||||
_state_str = {
|
_state_str = {
|
||||||
STATE_INIT: "init",
|
STATE_INIT: "init",
|
||||||
STATE_CONNECTED: "connected",
|
STATE_CONNECTED: "connected",
|
||||||
STATE_SCANNED: "scanned",
|
STATE_SCANNED: "scanned",
|
||||||
STATE_RUNNING: "running",
|
STATE_RUNNING: "running",
|
||||||
STATE_STOPPED: "stopped",
|
STATE_STOPPED: "stopped",
|
||||||
STATE_JOINED: "joined",
|
STATE_JOINED: "joined",
|
||||||
|
|||||||
@@ -379,7 +379,7 @@ static PyObject *wrap_mscp_get_stats(PyObject *self, PyObject *args, PyObject *k
|
|||||||
|
|
||||||
mscp_get_stats(m, &s);
|
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)
|
static PyObject *wrap_mscp_cleanup(PyObject *self, PyObject *args, PyObject *kw)
|
||||||
|
|||||||
Reference in New Issue
Block a user