diff --git a/helpers/docker.sh b/helpers/docker.sh index 3fa8229..85382b9 100644 --- a/helpers/docker.sh +++ b/helpers/docker.sh @@ -46,3 +46,34 @@ docker.exec() { debug "Команда: $cmd" $cmd } + +# Выводит информацию о контейнере +docker.inspect() { + cmd="docker inspect $*" + debug "Команда: $cmd" + $cmd 2>/dev/null +} + +docker.ip() { # not finished + if [ "$1" ]; then + if [ "$1" = "-a" ]; then + docker ps -aq \ + | xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \ + | sed -e 's#^/##' \ + | column -t + elif [ "$1" = "-c" ]; then + docker-compose ps -q \ + | xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \ + | sed -e 's#^/##' \ + | column -t + else + docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1" + docker port "$1" + fi + else + docker ps -q \ + | xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \ + | sed -e 's#^/##' \ + | column -t + fi +} diff --git a/helpers/misc.sh b/helpers/misc.sh index 199d335..00cd46d 100644 --- a/helpers/misc.sh +++ b/helpers/misc.sh @@ -6,10 +6,10 @@ # https://askubuntu.com/a/30414 is_full_screen() { - local WINDOW=$(echo $(xwininfo -id $(xdotool getactivewindow) -stats | \ - egrep '(Width|Height):' | \ - awk '{print $NF}') | \ - sed -e 's/ /x/') + local WINDOW=$(xwininfo -id "$(xdotool getactivewindow)" -stats \ + | grep -E '(Width|Height):' \ + | awk '{print $NF}' \ + | sed -e 's/ /x/') local SCREEN=$(xdpyinfo | grep -m1 dimensions | awk '{print $2}') if [ "$WINDOW" = "$SCREEN" ]; then return 0 @@ -17,19 +17,6 @@ is_full_screen() { return 1 } -curltime() { - curl -w @- -o /dev/null -s "$@" <<'EOF' - time_namelookup: %{time_namelookup} sec\n - time_connect: %{time_connect} sec\n - time_appconnect: %{time_appconnect} sec\n - time_pretransfer: %{time_pretransfer} sec\n - time_redirect: %{time_redirect} sec\n - time_starttransfer: %{time_starttransfer} sec\n - ---------------\n - time_total: %{time_total} sec\n -EOF -} - ytm() { youtube-dl \ --extract-audio \ @@ -38,29 +25,5 @@ ytm() { --format bestaudio \ --write-info-json \ --output "$HOME/Downloads/ytm/%(playlist_title)s/%(channel)s - %(title)s.%(ext)s" \ - $* -} - -docker.ip() { # not finished - if [ "$1" ]; then - if [ "$1" = "-a" ]; then - docker ps -aq \ - | xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \ - | sed -e 's#^/##' \ - | column -t - elif [ "$1" = "-c" ]; then - docker-compose ps -q \ - | xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \ - | sed -e 's#^/##' \ - | column -t - else - docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1" - docker port "$1" - fi - else - docker ps -q \ - | xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \ - | sed -e 's#^/##' \ - | column -t - fi + "$@" } diff --git a/helpers/net.sh b/helpers/net.sh new file mode 100644 index 0000000..fe77de7 --- /dev/null +++ b/helpers/net.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +######################################################## +# Networking functions +######################################################## + +get_current_ip() { + local CURRENT_IP + [ -f /etc/os-release ] && source /etc/os-release + case "$ID" in + debian|ubuntu) CURRENT_IP=$(hostname -I | awk '{print $1}') ;; + alpine) CURRENT_IP=$(ip -4 addr show eth0 | awk '/inet / {print $2}' | cut -d/ -f1 | head -n 1) ;; + *) CURRENT_IP="Unknown" ;; + esac + echo "$CURRENT_IP" +} + +get_external_ip() { + local ip="$(curl -s https://api.myip.com | jq .ip)" + echo "$ip" | tr -d '"' +} + +is_valid_ipv4() { + local ip="$1" + local regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$" + + if [[ $ip =~ $regex ]]; then + IFS='.' read -r -a parts <<< "$ip" + for part in "${parts[@]}"; do + if ! [[ $part =~ ^[0-9]+$ ]] || ((part < 0 || part > 255)); then + return 1 + fi + done + return 0 + fi + return 1 +} + +curltime() { + curl -w @- -o /dev/null -s "$@" <<'EOF' + time_namelookup: %{time_namelookup} sec\n + time_connect: %{time_connect} sec\n + time_appconnect: %{time_appconnect} sec\n + time_pretransfer: %{time_pretransfer} sec\n + time_redirect: %{time_redirect} sec\n + time_starttransfer: %{time_starttransfer} sec\n + ---------------\n + time_total: %{time_total} sec\n +EOF +} +