| #!/bin/bash |
| # ----------------------------------------------------------------------------- |
| # Collect Atomix logs from a single node or the current ONOS cell. |
| # ----------------------------------------------------------------------------- |
| |
| [ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 |
| . $ONOS_ROOT/tools/build/envDefaults |
| |
| function print_usage { |
| command_name=`basename $0` |
| echo "Collect Atomix logs from a single node or the current ONOS cell." |
| echo |
| echo "Usage: $command_name <TARGET> " |
| echo " $command_name [-h | --help]" |
| echo "Options:" |
| echo " TARGET The target of the command" |
| echo " [-h | --help] Print this help" |
| echo "" |
| echo "TARGET: <hostname | --cell>" |
| echo " hostname Execute on the specified host name" |
| echo " --cell Execute on the current ONOS cell" |
| echo "" |
| } |
| |
| # Print usage |
| if [ "${1}" = "-h" -o "${1}" = "--help" ]; then |
| print_usage |
| exit 0 |
| fi |
| |
| # Select the target |
| if [ "${1}" = "--cell" ]; then |
| nodes=$(env | sort | egrep "^OCC[0-9]+" | cut -d= -f2) |
| else |
| nodes=${1:-$OCI} |
| fi |
| |
| # Execute the remote commands |
| for node in $nodes; do |
| echo "fetching from ${node}..." |
| USE_RSYNC=${USE_RSYNC:-'false'} |
| # Check if RSYNC is installed |
| if [ "$USE_RSYNC" = "true" ]; then |
| if ssh $ONOS_USER@${node} $SSH_OPTIONS which rsync >&2 > /dev/null; then |
| echo "Using rsync" |
| else |
| echo "Installing rsync" |
| # TODO check remote OS and use proper method to install rsync |
| ssh $ONOS_USER@${node} sudo apt-get install -y rsync || USE_RSYNC='false' |
| fi |
| fi |
| |
| mkdir -p ${node} |
| if [ "$USE_RSYNC" = "true" ]; then |
| rsync -avhz --progress [$ONOS_USER@${node}]:$ATOMIX_INSTALL_DIR/log/atomix.log* ./${node}/ |
| else |
| scp -p $ONOS_USER@[${node}]:$ATOMIX_INSTALL_DIR/log/atomix.log* ./${node}/ |
| fi |
| done |