将 Traceroute 和 ping 命令的特定输出复制到文件中

将 Traceroute 和 ping 命令的特定输出复制到文件中

我对 Linux 还很陌生,所以不要对我太苛刻:)我目前正处于 ISP 的 CGNAT 下,我可以连接到网络外部的家庭服务器的唯一方法是通过 WAN IP 访问它(这可以在路由器管理页面中看到)。我发现通过输入

traceroute -n 8.8.8.8

然后复制第三个IP地址并将其放入ping命令中

ping -c 3 -R x.x.x.x

给我 WAN IP 的输出。

我正在寻找将该 WAN IP 复制到文件中并将其粘贴到 ddclient ddclient.conf 的配置文件中的方法。

如果有任何更优雅的解决方案来实现我想要实现的目标,那就太好了!

答案1

使用pingandtraceroute为此不一定有帮助,因为他们使用ICMP作为协议,出于安全原因,许多系统都配置为不响应 ICMP 回显请求。我的系统的示例:

pg@TREX:~$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1  0.699 ms  0.594 ms  0.800 ms
 2  213.243.152.36  25.235 ms * *
 3  * * *
 4  * * *
 5  142.250.169.179  26.723 ms  26.534 ms  26.464 ms
 6  142.250.169.178  34.509 ms  34.216 ms  34.234 ms
 7  * * *
 8  8.8.8.8  21.684 ms  24.621 ms  16.712 ms

星号表示没有响应的系统。

dig轻松提供您正在寻找的内容:

pg@TREX:~$ dig +short myip.opendns.com @resolver1.opendns.com
XX.YY.50.178

如果得到空结果,请在digging 之前禁用 IPv6。

pg@TREX:~$ ip add show dev enp11s0
2: enp11s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 78:f2:9e:f6:1c:0f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.220/24 brd 192.168.1.255 scope global dynamic noprefixroute enp11s0
       valid_lft 86262sec preferred_lft 86262sec
    inet6 2001:96ab:c4:3c0a:ec56:2319:9a63:3/128 scope global dynamic noprefixroute 
       valid_lft 7064sec preferred_lft 3464sec
    inet6 fdec:5623:b43a:a2a9:9039:d8ab:961f:bd6c/64 scope global dynamic noprefixroute 
       valid_lft 7074sec preferred_lft 3474sec
    inet6 2001:14bb:a2:6830:28de:50f1:f2db:9ebf/64 scope global dynamic noprefixroute 
       valid_lft 7074sec preferred_lft 3474sec
    inet6 fe80::9f5b:debb:1215:54e2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
pg@TREX:~$ dig +short myip.opendns.com @resolver1.opendns.com
pg@TREX:~$ 

答案2

网络上有几个站点会告诉您所连接的 IP 地址。我觉得有用的其中之一是http://ifconfig.me(这适用于 http 或 https 协议。在浏览器中查看此内容将显示您的 IP 地址以及有关浏览器的一些详细信息以及命令行使用说明)

您可以在命令行上使用 获取 IP curl。例如

curl ifconfig.me

这将只返回您的 IP 地址,没有 html,没有其他内容,甚至 IP 后面也没有换行符。

我将它与以下简单的包装脚本一起使用:

$ cat /usr/local/bin/what-is-my-ip.sh
#!/bin/sh

unset http_proxy
unset https_proxy

curl ifconfig.me
echo

相关内容