#!/bin/bash -e # if we start up as ./$0, assume we are running from a source # checkout. if [ `dirname $0` = "." ] && [ $PWD != "/usr/bin" ]; then known_hosts=../share/known_hosts_drop.ceph.com ssh_key=../share/id_dsa_drop.ceph.com else known_hosts=@datadir@/known_hosts_drop.ceph.com ssh_key=@datadir@/id_dsa_drop.ceph.com fi usage() { echo "Usage: $0 [options] file1 [dir2 ...] Easily upload files or directories to ceph.com for analysis by Ceph developers. Each invocation uploads files or directories to a separate directory with a unique tag. That tag can be passed to a developer or referenced in a bug report (http://tracker.ceph.com/). Once the upload completes, the directory is marked non-readable and non-writeable to prevent access or modification by other users. WARNING: Basic measures are taken to make posted data be visible only to developers with access to ceph.com infrastructure. However, users should think twice and/or take appropriate precautions before posting potentially sensitive data (for example, logs or data directories that contain Ceph secrets). Options: -d Description for this post [Default: none] -u User identifier [Default: \`whoami\`@\`hostname -f\`] -r Remote to upload to [Default: postfile@drop.ceph.com] -k known_hosts file [Default: /usr/share/ceph/known_hosts_drop.ceph.com] -i Ssh identity file [Default: /usr/share/ceph/id_dsa_drop.ceph.com] -h Show this usage information " } if [ -z "$*" ]; then usage exit 1 fi description="" user="`whoami`@`hostname -f`" remote="postfile@drop.ceph.com" case $1 in -d | --description) description="$2" shift shift ;; -u | --user) user="$2" shift shift ;; -h | --help) usage exit 0 ;; -k | --known-hosts) known_hosts="$1" shift shift ;; -i) ssh_key="$1" shift shift ;; -r | --remote) remote="$1" shift shift ;; esac # this id should be shared id=`uuidgen` echo "$0: upload tag $id" # this is secret goop we add to the directory so that $id is not # enough to find the data using the shared user; only ceph developers # who have access to the server and can read the post directory can # find the uploaded data. nonce=`uuidgen` # stick the user info in the dir too dir="${id}_${user}_${nonce}" t1=$(mktemp) || exit t2=$(mktemp) || exit t3=$(mktemp) || exit t4=$(mktemp) || exit trap "rm -f -- '$t1' '$t2' '$t3' '$t4'" EXIT cat > $t1 < $t3 <> $t1 if [ -n "$description" ]; then echo "$0: description: $description" cat > $t2 <> $t1 fi while [ -n "$*" ]; do if [ -d "$1" ]; then echo $0: will upload directory $1 bn=`basename "$1"` cat >> $t1 <> $t1 <