2
0

tunasynctl.py 1016 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env python2
  2. # -*- coding:utf-8 -*-
  3. import sys
  4. import socket
  5. import argparse
  6. import json
  7. import struct
  8. if __name__ == "__main__":
  9. parser = argparse.ArgumentParser(prog="tunasynctl")
  10. parser.add_argument("-s", "--socket",
  11. default="/var/run/tunasync.sock", help="socket file")
  12. parser.add_argument("command", help="command")
  13. parser.add_argument("target", nargs="?", default="__ALL__", help="target")
  14. args = parser.parse_args()
  15. sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
  16. try:
  17. sock.connect(args.socket)
  18. except socket.error as msg:
  19. print(msg)
  20. sys.exit(1)
  21. pack = json.dumps({
  22. 'cmd': args.command,
  23. 'target': args.target,
  24. })
  25. try:
  26. sock.sendall(struct.pack('!H', len(pack)) + pack)
  27. length = struct.unpack('!H', sock.recv(2))[0]
  28. print(sock.recv(length))
  29. except Exception as e:
  30. print(e)
  31. finally:
  32. sock.close()
  33. # vim: ts=4 sw=4 sts=4 expandtab