2012-06-15 65 views
0

我在學校的一臺服務器上有一個帳戶,有時候我需要一臺家用電腦。我交換了鑰匙,現在只有一個問題。雖然我的學校帳戶有一個與之相關的名字,「account_name @ school」,但我的家庭網絡卻沒有。我的計劃是製作一個腳本,每個小時都會檢索我的家庭網絡的IP地址,ssh登錄到我的學校帳戶,並更新存儲我家庭網絡IP地址的ssh配置文件。我如何從shell腳本獲取家庭網絡的IP地址?

如何從shell腳本中檢索家用電腦的IP地址?

P.S.這是一個明智的計劃嗎?

+0

你嘗試解析IPCONFIG /使用ifconfig? – alfasin

+1

@alfasin這不太可能有用,因爲大多數家庭網絡不會將公共IP分配給內部設備。 –

+0

@CodeGnome你是對的,除非他的ISP爲他提供了一個靜態IP – alfasin

回答

0

我想出了一個更好的獲取IP地址然後使用外部服務的方式。我正在SSH服務器中;因此,服務器必須知道誰是ssh方式連接到它,所以我可以用喜歡誰或小指的工具,以找出誰是ssh方式連接。

這裏是命令來獲取登錄的計算機的名稱。

echo $SSH_CLIENT | awk '{ print $1 }' 
+0

這不能正常工作,如果你是SSH '從另一個網絡編輯。如果您使用的是NETWORK A,並且使用ssh連接到NETWORK B中的服務器,則上述命令將給出NETWORK A的公共IP地址,而不是NETWORK B中服務器的公共IP地址。 –

+1

@Jakobud獲取NETWORK A的IP地址爲重點。網絡A已經知道網絡B的IP地址(網絡B有一個域名)我希望網絡B擁有網絡A(沒有域名)的IP地址,所以網絡A使用SSH去告訴網絡B它是IP地址(在這種情況下)。 –

2

你有兩個基本的選擇:

  1. 動態DNS地址(例如dyndns.org)。設置超出堆棧溢出的範圍,但它可能是你的正確的事情™。

  2. 使用像http://checkip.dyndns.org/這樣的工具報告您的外部IP地址,然後解析結果。

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

無論哪種方式,您需要將您的路由器配置爲允許SSH入站訪問,所以進一步的信息需要被要求在Super UserUnix & Linux

+0

你是對的(+1),並且使用Google搜索「我的IP是什麼」也適用;) – alfasin

0

您可以向http://automation.whatismyip.com/n09230945.asp申請從WIMI獲取您的公共IP。這條命令:

ssh [email protected] "echo -n "$(wget http://automation.whatismyip.com/n09230945.asp -O -)" > some_remote_file" 

將你家的公網IP寫一個在學校主文件夾名爲「some_remote_file」文件。使用cron進行設置,您將可以從學校訪問家中的路由器公共IP。

如果你已經設置了某種形式的端口轉發的路由器上,這樣就可以ssh到您的家用電腦與路由器IP,你要善於去:)

1

http://ipcalf.com服務器支持頁眉或基於明確的內容協商,這是說的一個奇特的方式,如果你curl -H Accept:text/plain ipcalf.comcurl -s http://ipcalf.com/?format=text你應該得到原始形式的公網IP地址。

( 「全」 文檔和源代碼是on github