0

我在学校的服务器上有一个帐户,还有一台我有时需要使用的家用电脑。我已经交换了密钥,现在只有一个问题。虽然我的学校帐户有一个与之关联的名称“account_name@school”,但我的家庭网络没有。我的计划是有一个脚本,每小时检索我的家庭网络的 IP 地址,ssh'es 到我的学校帐户并更新我的 ssh 配置文件存储我的家庭网络的 IP 地址。

如何从 shell 脚本中检索家用计算机的 IP 地址?

PS这是一个明智的计划吗?

4

4 回答 4

2

您有两个基本选择:

  1. 动态 DNS 地址(例如 dyndns.org)。设置它超出了 Stack Overflow 的范围,但它可能是适合您的 The Right Thing™。

  2. 使用http://checkip.dyndns.org/之类的工具报告您的外部 IP 地址,然后解析结果。

    lynx -dump http://checkip.dyndns.org/ | awk '{print $NF}'
    

无论哪种方式,您都需要将路由器配置为允许 SSH 的入站访问,因此需要在Super UserUnix & Linux上询问更多信息。

于 2012-06-15T23:17:26.917 回答
1

我的http://ipcalf.com服务器支持基于标头或显式内容协商,这是一种奇特的说法,即如果您curl -H Accept:text/plain ipcalf.comcurl -s http://ipcalf.com/?format=text您应该以原始形式获取您的公共 IP 地址。

(“完整”文档和源代码在 github 上。)

于 2013-09-05T05:49:26.613 回答
0

您可以向http://automation.whatismyip.com/n09230945.asp发出请求,以从WIMI获取您的公共 IP 。这个命令:

ssh account_name@school "echo -n "$(wget http://automation.whatismyip.com/n09230945.asp -O -)" > some_remote_file"

会将您的家庭公共 IP 写入您在学校的主文件夹中名为“some_remote_file”的文件。使用 cron 设置它,您将可以从学校访问您家的路由器公共 IP。

如果您已经在路由器上设置了某种端口转发,以便您可以使用路由器 IP ssh 到您的家用计算机,那么您应该很高兴:)

于 2012-06-15T23:20:22.490 回答
0

我想出了一个更好的方法来获取 IP 地址,然后使用外部服务。我正在通过 SSH 连接到服务器;因此,服务器必须知道谁在通过 SSH 连接,所以我可以使用 who 或 pinky 之类的工具来找出谁在通过 SSH 连接。

这是获取登录计算机名称的命令。

echo $SSH_CLIENT | awk '{ print $1 }'
于 2012-06-15T23:50:58.490 回答