From a03b89039266b8e2a9cf95eef026365a863a8431 Mon Sep 17 00:00:00 2001 From: Viacheslav Hletenko Date: Tue, 17 May 2022 11:19:07 +0000 Subject: op-mode: T4429: Ability to detect external IP address In some cases, it is useful to detect own external IP address for example if the host behind NAT Send curl request to random online service from the list to detect IP address ; show ip external ; 192.0.2.95 --- op-mode-definitions/show-ip.xml.in | 6 ++++++ src/op_mode/show_ip_external.sh | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100755 src/op_mode/show_ip_external.sh diff --git a/op-mode-definitions/show-ip.xml.in b/op-mode-definitions/show-ip.xml.in index 91564440d..30c08f8e8 100644 --- a/op-mode-definitions/show-ip.xml.in +++ b/op-mode-definitions/show-ip.xml.in @@ -7,6 +7,12 @@ Show IPv4 routing information + + + Show IPv4 external address + + ${vyos_op_scripts_dir}/show_ip_external.sh + Show IPv4 Neighbor Discovery (ND) information diff --git a/src/op_mode/show_ip_external.sh b/src/op_mode/show_ip_external.sh new file mode 100755 index 000000000..275d05278 --- /dev/null +++ b/src/op_mode/show_ip_external.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Detect an external IP address +# Use random services for checking + + +array=( + ipinfo.io/ip + ifconfig.me + ipecho.net/plain + icanhazip.com + v4.ident.me + checkip.amazonaws.com +) + +size=${#array[@]} +index=$(($RANDOM % $size)) + +curl --silent ${array[$index]} | tr -d "[:space:]" && echo -- cgit v1.2.3