]> arthur.barton.de Git - bup.git/blobdiff - cmd/on-cmd.py
fsck: only specify -t1 when par2 appears to support it
[bup.git] / cmd / on-cmd.py
index 60759b64a6d6d85332c489de8a81df04f6d57f94..0643ef8002e517e3808e436d32313911868f43d7 100755 (executable)
@@ -1,12 +1,23 @@
-#!/usr/bin/env python
+#!/bin/sh
+"""": # -*-python-*-
+bup_python="$(dirname "$0")/bup-python" || exit $?
+exec "$bup_python" "$0" ${1+"$@"}
+"""
+# end of bup preamble
+
+from __future__ import absolute_import
 import sys, os, struct, getopt, subprocess, signal
+
+from subprocess import PIPE
 from bup import options, ssh, path
-from bup.helpers import *
+from bup.helpers import DemuxConn, log
+
 
 optspec = """
 bup on <hostname> index ...
 bup on <hostname> save ...
 bup on <hostname> split ...
+bup on <hostname> get ...
 """
 o = options.Options(optspec, optfunc=getopt.getopt)
 (opt, flags, extra) = o.parse(sys.argv[1:])
@@ -33,9 +44,8 @@ try:
         (hostname, port) = (hp[0], None)
     else:
         (hostname, port) = hp
-
     argv = extra[1:]
-    p = ssh.connect(hostname, port, 'on--server')
+    p = ssh.connect(hostname, port, 'on--server', stderr=PIPE)
 
     try:
         argvs = '\0'.join(['bup'] + argv)
@@ -45,6 +55,10 @@ try:
                               stdin=p.stdout, stdout=p.stdin)
         p.stdin.close()
         p.stdout.close()
+        # Demultiplex remote client's stderr (back to stdout/stderr).
+        dmc = DemuxConn(p.stderr.fileno(), open(os.devnull, "w"))
+        for line in iter(dmc.readline, ""):
+            sys.stdout.write(line)
     finally:
         while 1:
             # if we get a signal while waiting, we have to keep waiting, just
@@ -54,11 +68,11 @@ try:
                 if sp:
                     sp.wait()
                 break
-            except SigException, e:
+            except SigException as e:
                 log('\nbup on: %s\n' % e)
                 os.kill(p.pid, e.signum)
                 ret = 84
-except SigException, e:
+except SigException as e:
     if ret == 0:
         ret = 99
     log('\nbup on: %s\n' % e)