github.com/vmware/govmomi@v0.37.1/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