diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2022-05-17 11:19:07 +0000 |
---|---|---|
committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2022-05-17 11:19:07 +0000 |
commit | a03b89039266b8e2a9cf95eef026365a863a8431 (patch) | |
tree | 17d3575be4404bcdc3071b5b6a103c8938cf42ab | |
parent | 9347dc53c5bd3d5712121524ea16f3030d735601 (diff) | |
download | vyos-1x-a03b89039266b8e2a9cf95eef026365a863a8431.tar.gz vyos-1x-a03b89039266b8e2a9cf95eef026365a863a8431.zip |
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
-rw-r--r-- | op-mode-definitions/show-ip.xml.in | 6 | ||||
-rwxr-xr-x | src/op_mode/show_ip_external.sh | 19 |
2 files changed, 25 insertions, 0 deletions
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 @@ <help>Show IPv4 routing information</help> </properties> <children> + <node name="external"> + <properties> + <help>Show IPv4 external address</help> + </properties> + <command>${vyos_op_scripts_dir}/show_ip_external.sh</command> + </node> <node name="neighbors"> <properties> <help>Show IPv4 Neighbor Discovery (ND) information</help> 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 |