github.com/vmware/govmomi@v0.37.2/scripts/wireshark-vcsa.sh (about)

     1  #!/bin/bash -e
     2  #
     3  # Capture SOAP traffic between web client and vpxd on 127.0.0.1:8085.
     4  #
     5  # Caveats: tested with VCSA 6.0, unlikely to work for other versions.
     6  #
     7  
     8  set -e
     9  
    10  cache_deb() {
    11    wget $1
    12    ar x *.deb data.tar.gz
    13    tar zxf data.tar.gz
    14    rm -f data.tar.gz
    15    rm -f *.deb
    16  }
    17  
    18  dirname="$(dirname $0)"
    19  basename="$(basename $0)"
    20  bindir="${dirname}/.${basename}"
    21  
    22  mkdir -p "${bindir}"
    23  
    24  # Cache binaries required to run tcpdump on vcsa
    25  if [ ! -f "${bindir}/.done" ]; then
    26    pushd ${bindir}
    27    cache_deb https://launchpadlibrarian.net/200649143/libssl0.9.8_0.9.8k-7ubuntu8.27_amd64.deb
    28    cache_deb https://launchpadlibrarian.net/37430984/libpcap0.8_1.0.0-6_amd64.deb
    29    cache_deb https://launchpadlibrarian.net/41774869/tcpdump_4.0.0-6ubuntu3_amd64.deb
    30    touch .done
    31    popd
    32  fi
    33  
    34  scp=(scp)
    35  ssh=(ssh)
    36  
    37  # Extract host from GOVC_URL
    38  host="$(govc env -x GOVC_HOST)"
    39  username=root
    40  password="$(govc env GOVC_PASSWORD)"
    41  
    42  if [ -x "$(which sshpass)" ] ; then
    43    scp=(sshpass -p "$password" scp)
    44    ssh=(sshpass -p "$password" ssh)
    45  fi
    46  
    47  ssh_opts=(-o UserKnownHostsFile=/dev/null
    48            -o StrictHostKeyChecking=no
    49            -o LogLevel=FATAL
    50            -o User=${username}
    51            -o ControlMaster=no)
    52  dev="lo"
    53  filter="port 8085"
    54  tcpdump="env LD_LIBRARY_PATH=/tmp /tmp/tcpdump"
    55  
    56  echo "Capturing $dev on $host..."
    57  
    58  "${scp[@]}" "${ssh_opts[@]}" \
    59              "${bindir}/lib/libcrypto.so.0.9.8" \
    60              "${bindir}/usr/lib/libpcap.so.0.8" \
    61              "${bindir}/usr/sbin/tcpdump" \
    62              "${host}:/tmp"
    63  
    64  "${ssh[@]}" "${ssh_opts[@]}" "$host" ${tcpdump} -i "$dev" -s0 -v -w - "$filter" | wireshark -k -i - 2>/dev/null