IPアドレスを取得するためのシェルコマンド?


回答:



25

次を使用できます。

/bin/ip addr

3
@opierce mpblochの答えを正しいとマークしましたが、これはiproute2スイートの一部であるため、参考までにこの答えを使用する必要があります。ifconfig現在段階的です。
jwbensley

3
実行するだけで短くすることができip aます。
gak

19

使用中の内部アドレスがある場合、チェック

curl http://myip.dnsomatic.com

UNIXシェルでは良いアイデアかもしれません。
または、そのURLをブラウザに突っ込むだけです。


あなたは「とは異なる答えを得る場合はifconfig -a、」結果を、外部からだろうおそらくない仕事-あなたの内部アドレスを与えました。
ifconfig


すべてが正常に見える場合でも、着信ssh接続を許可しないファイアウォールを設定できます
その時点で、マシンのブラウザから目的のポートを試す必要があります。

http://www.canyouseeme.org/

これにより、接続が確認されます。

  • 外部IPアドレス(そのページに表示されます)
  • NAT、ポート転送
  • ファイアウォール

本当ですが、その場合、内部IPが何であれsshを一致させるためのNAT /ポート転送ルールはおそらく存在しません。
カイルブラント

@Kyle、これは追加できます...-
nik

3
+1curl http://myip.dnsomatic.com
JatSing

これと同様に、curl ifconfig.me
jwbensley

19

/bin/hostname -i


3
この場合、を使用することをお勧めしhostname --all-ip-addressesます。ホストのすべてのネットワークアドレスを表示します。このオプションは、すべてのネットワークインターフェイスで設定されたすべてのアドレスを列挙します。ループバックインターフェイスとIPv6リンクローカルアドレスは省略されています。オプション-iとは異なり、このオプションは名前解決に依存しません。出力の順序について何も仮定しないでください。
lrkwz 14年

5
@lrkwzのコメントの代替案/bin/hostname -I
hanxue 14

ありがとう@hanxue-これはそれ自身の答えであるはずです-最もクリーンな出力を持つ最短のコマンド-まさに私が探していたものです!私の経験(Ubuntu)では、/bin/hostname -iただ与えるだけで127.0.1.1、それは役に立たない。
ロジャーデューク


9
/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'

内部アドレスが必要な場合、ifconfigの後にインターフェースを追加します。例えば

 /sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'

+1、これはまさにが問題を解決するため必要なものです。ワンライナーのために万歳!
J.ポルファー

+1ヘッドなし-1:/ sbin / ifconfig | grep inet | sed 's / \:/ /' | awk 'NR == 1 {print $ 3}'
joeslice

おかげで、Debianでは動作しますが、OS Xでは動作せず、ゴミを返します。両方で機能するラインを使用できたら素晴らしいと思います。ここではOS X上でifconfigコマンドの出力は次のようになります。gist.github.com/ssbarnea/5814657
ソリン


3

ルーターのIPアドレスを調べる必要がある場合は、このコマンドを実行できます。

dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

DNSサーバーにOpenDNSを使用している場合は、次のように短縮できます。

dig + short myip.opendns.com

このコマンドを使用することもできます。

curl http://myip.dnsomatic.com

3

複数のインターフェイスがある場合、どのインターフェイスにIPが必要かを指定すると便利です。インターフェイス 'eth0'のIPV4アドレスが必要な場合:

ip addr show dev eth0 | grep "inet " | awk '{ print $2 }' 

インターフェイス 'eth0'のIPV6アドレスが必要な場合:

ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }' 

ラップトップの2つの一般的なインターフェイスwlan0とeth0の間でIPを検索する場合:

CURRENT_IP=''
for INTERFACE in wlan0 eth0; do
    if [ -z $CURRENT_IP ]; then
        CURRENT_IP=$(ip addr show dev $INTERFACE | grep "inet " | awk '{ print $2 }')
    fi
done


2

LinuxおよびOS Xでも機能する1行を次に示します。これは、ローカルではない最初のアドレスを返します。

ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'

/programming//a/13322549/99834にクレジットを送信します



1

最も簡単な方法はおそらく

ifconfig eth0

マシンがデフォルトの有線インターフェース上に単一のIPアドレスを持っていると仮定すると-必要になるかもしれません

ifconfig wlan0

WiFiの場合。


1
ip address show scope link

それはあなたの生活のIPアドレスを表示します-リンクを持っています-インターフェース。しかし、これはbashコマンドではありません。BashにはIPとネットワークについて知る能力がまったくありません。


1

私が理解しているのは、ダイナミックIPを持つリモートubuntuマシンを接続したいということです。dyndns.orgサイトにアクセスして、無料のアカウントを開きます。次に、リモートマシンに動的IPツールをインストールする必要があります。

sudo aptitude install dyndns-client

あなたは経由でリモートマシンをsshすることができます

ssh username@yourdynamicnamealias.dyndns.org

そのため、構成後、リモートマシンのIPアドレスは必要ありません。


これは、動的IPを扱うための私の推奨方法です。dyndns.orgは素晴らしい無料のサービスです。
ジョンバレット

1

私が使用しているものは次のとおりです。

LC_ALL=C /sbin/ifconfig | awk '
    /inet addr/ {
        gsub("addr:","");
        if(($2!="127.0.0.1") && ($2!="0.0.0.0") && ($2!=""))
            { print $2 };
    }'

1

特定のインターフェイスのIPが1つだけ必要な場合は、次の操作を実行できます。

ifconfig eth0 | grep "inet " | awk '{gsub("addr:","",$2);  print $2 }' 


0

ボックスのパブリックIPアドレスを探している場合は、次を使用できます。

  • dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \"

またはなどのdig(1)オプションを使用して、特にIPv4またはIPv6アドレスを検索できます。Googleは、タイプのレコードで回答を提供します。その後、変数をなどのユーティリティで使用する場合は、tr(1)などを使用して、上記の引用符を削除する必要があります。-4-6TXTdigtraceroute

他のオプションには、whoami.akamai.netとが含まれmyip.opendns.com、で応答しAAAAA記録します(TXT上記のGoogleの例ではなく)ので、引用符を削除する必要はありません。

  • dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short

  • dig -4 @resolver1.opendns.com -t any myip.opendns.com +short

  • dig -6 @resolver1.opendns.com -t any myip.opendns.com +short

上記のすべてのオプションを使用して変数を設定するサンプルスクリプトを次に示します。

#!/bin/sh
IPANY="$(dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv4="$(dig -4 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv6="$(dig -6 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
AKAMv4="$(dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short)"
CSCOv4="$(dig -4 @resolver1.opendns.com -t a myip.opendns.com +short)"
CSCOv6="$(dig -6 @resolver1.opendns.com -t aaaa myip.opendns.com +short)"
printf '$GOOG:\t%s\t%s\t%s\n' "${IPANY}" "${GOOGv4}" "${GOOGv6}"
printf '$AKAM:\t%s\n$CSCO:\t%s\t%s\n' "${AKAMv4}" "${CSCOv4}" "${CSCOv6}"

あなたはプライベートIPアドレスを探しているなら、またはボックスに割り当てられたすべてのIPアドレスのセットのために、あなたはいくつかの組み合わせを使用することができifconfig、(BSDやGNU / Linux上)ip addr(GNU / Linux上)、 hostname(オプション-iおよび-I上GNU / Linux)およびnetstat何が起こっているかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.