summaryrefslogtreecommitdiff
path: root/docker-netshoot
diff options
context:
space:
mode:
Diffstat (limited to 'docker-netshoot')
-rwxr-xr-xdocker-netshoot52
1 files changed, 52 insertions, 0 deletions
diff --git a/docker-netshoot b/docker-netshoot
new file mode 100755
index 0000000..8b77e7f
--- /dev/null
+++ b/docker-netshoot
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -euo pipefail
+
+NETSHOOT_IMAGE="nicolaka/netshoot"
+
+usage() {
+ echo "Run netshoot container with docker network."
+ echo "Options:"
+ printf "\t%s\t\t%s\n" "-h" "print this help"
+ printf "\t%s\t%s\n" "-n NETWORK" "user provided network"
+ printf "\t%s\t\t%s\n" "-N" "user default network"
+}
+
+select_network() {
+ docker network ls | fzf \
+ --header-lines=1 \
+ --select-1 --exit-0 \
+ --preview-label="Containers" \
+ --preview-window=down,10 \
+ --preview "docker network inspect {1} | jq -r '.[].Containers | .[].Name'" | awk '{print $1}'
+}
+
+main() {
+ local network=
+ while getopts "hNn:" opt; do
+ case "${opt}" in
+ h)
+ usage
+ exit
+ ;;
+ N)
+ network="default"
+ ;;
+ n)
+ network="$OPTARG"
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+ done
+ shift $((OPTIND - 1))
+
+ if [ -z "$network" ]; then
+ network=$(select_network)
+ fi
+ docker run --interactive --tty --rm --network "$network" "$NETSHOOT_IMAGE"
+}
+
+main "$@"