12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/env python2
- # -*- coding:utf-8 -*-
- import sys
- import socket
- import argparse
- import json
- import struct
- if __name__ == "__main__":
- parser = argparse.ArgumentParser(prog="tunasynctl")
- parser.add_argument("-s", "--socket",
- default="/run/tunasync/tunasync.sock", help="socket file")
- subparsers = parser.add_subparsers(dest="command", help='sub-command help')
- sp = subparsers.add_parser('start', help="start job")
- sp.add_argument("target", help="mirror job name")
- sp = subparsers.add_parser('stop', help="stop job")
- sp.add_argument("target", help="mirror job name")
- sp = subparsers.add_parser('restart', help="restart job")
- sp.add_argument("target", help="mirror job name")
- sp = subparsers.add_parser('status', help="show mirror status")
- sp.add_argument("target", nargs="?", default="__ALL__", help="mirror job name")
- sp = subparsers.add_parser('log', help="return log file path")
- sp.add_argument("-n", type=int, default=0, help="last n-th log, default 0 (latest)")
- sp.add_argument("target", help="mirror job name")
- sp = subparsers.add_parser('help', help="show help message")
- args = vars(parser.parse_args())
- if args['command'] == "help":
- parser.print_help()
- sys.exit(0)
- sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
- try:
- sock.connect(args.pop("socket"))
- except socket.error as msg:
- print(msg)
- sys.exit(1)
- pack = json.dumps({
- "cmd": args.pop("command"),
- "target": args.pop("target"),
- "kwargs": args,
- })
- try:
- sock.sendall(struct.pack('!H', len(pack)) + pack)
- length = struct.unpack('!H', sock.recv(2))[0]
- print(sock.recv(length))
- except Exception as e:
- print(e)
- finally:
- sock.close()
- # vim: ts=4 sw=4 sts=4 expandtab
|