-#!/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 ...
(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)
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
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)