web-dev-qa-db-ja.com

bashシェルを使用してコンピューターのIPアドレスを確認するにはどうすればよいですか?

ここで説明するように、Django開発サーバーを起動し、ネットワーク上の他のマシンから表示できるようにする必要があります。

http://docs.djangoproject.com/en/dev/ref/Django-admin/#runserver

マシンのIPアドレスは時々変更される傾向があるため、マシンの現在のIPアドレスを使用して小さなシェルエイリアスまたはmanage.pyコマンドを吐き出すものを用意します。

python manage.py runserver $(COMMAND TO FIND MY MACHINE’S IP ADDRESS GOES HERE):8000
26
Paul D. Waite
ifconfig en0 | grep inet | grep -v inet6

上記の出力は、次の形式になると予想されます。

inet 192.168.111.1ネットマスク0xffffff00ブロードキャスト192.168.111.255

Awkステートメントを追加して2番目の列を印刷し、カットの使用を回避します(awkはかなり標準的なUNIXツールです)。

ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'

IPの最初の数個が常に同じであるLAN上にある場合、以下を使用して現在のIPを取得します(192.168.111を独自の数に置き換えます)。

ifconfig | grep 192.168.111 | awk '{print $2}'

名前がわかっている別のマシンのIPを取得するには、(ホスト名と192.168.111を独自の値に置き換えてください):

ping -c 1 hostname | grep 192.168.11 | grep 'bytes from' | awk '{print $4}' | sed 's/://g'
52
Valentin Rocher

あなたはすでに気づいているかもしれませんが、実行中

python manage.py runserver 0.0.0.0:8000

あなたのマシンをネットワーク上の誰にでも見えるようにします。

IPを指定する必要がある理由はありますか?

15
Joey Robert

Thiは、私がすでに見た他のコマンドと同様に機能するはずです。

ifconfig eth0 | grep inet | awk '{print $2}' | cut -d':' -f2
  • eth0を目的のインターフェース(eth0、eth1、wlan0 ...)に置き換えます

I̶̶t̶h̶i̶n̶k̶̶y̶o̶u̶̶c̶a̶n̶̶a̶l̶s̶o̶̶w̶r̶i̶t̶e̶:̶

̶̶̶h̶o̶s̶t̶n̶a̶m̶e̶̶-̶I̶̶|̶̶c̶u̶t̶̶-̶d̶'̶̶'̶̶-̶f̶1̶̶

7
ederollora

最善の解決策は次のとおりです。

ifconfig | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/\1/p'
5
Stoic

人々は文字カウントを使用してIPアドレス行から正しい列をプルしていますが、スペースをdelimとして使用すると、これをさまざまな長さのIPアドレスに拡張できます...

ifconfig en1 | grep inet | grep -v inet6 | cut -d" " -f2
5
Matt Crampton

これは、OSXの下で動作する、すばやく汚れた方法です。

/sbin/ifconfig | grep 'inet ' | grep -v '127.0.0.1' | head -n1 | awk '{print $2}'

基本的に、IPV4アドレスを持つすべてのインターフェースを取得し、localhostをスキップして、最初のインターフェースを取得します。

また、ifconfigへのパスを使用します。元から使用したとき、多くのシェルスクリプトブレーキを見てきました。 PATH障害のためのcron。

4
stjernstrom

次のコマンドは、RHEL 6.3では完全に機能します。

 ifconfig | grep -v '127.0.0.1' | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/\1/p'
3
SMQ

ifconfigはおそらくあなたが求めているものです。ただし、grepを実行して、ノイズの一部を除去する必要があります。

3
James Gregory

Mac OS X 10.11.6 El Capitan(およびおそらく古いリリース)では、次のコマンドでIPを印刷できます。

ipconfig getifaddr <device>

どこ <device>en0en1など.

http://osxdaily.com/2010/11/21/find-ip-address-mac/

3
Heath Borders

これは他のいくつかのソリューションほどエレガントではないかもしれませんが、Linuxシステムで機能し、正規表現よりも見やすくなっています。

ifconfig eth0 | grep 'inet addr:' | awk '{print $2}' | awk -F ':' '{print $2}'
2
Eric Lubow

これを試してください(Archユーザーの場合)

resolveip -s $HOSTNAME

オルタナティブ

IPv4アドレスを取得するには、以下を使用できます。

Host $(uname -n) | grep "address" | grep -v "IPv6" | head -n 1 | awk '{print $4}'

IPv6 oneを取得するには:

Host $(uname -n) | grep "IPv6 address" | head -n 1 | awk '{print $5}'

必要に応じて、$(uname -n)を$(hostname)に置き換えることができます。

1
oblalex

これはデフォルトのインターフェースをチェックし、それを使用してプライマリIPを取得します。多くのインターフェースと大量の仮想IPアドレスがある場合に役立ちます。

netstat -rn | gawk '/UG/ {print $NF}' | xargs ifconfig | gawk 'match($0,/inet addr:(.*) B/,a) {print a[1]}'
0

デフォルトのインターフェースでIPアドレスを細かく設定する簡単なコマンド

ip -o route get "8.8.8.8" 2>/dev/null | sed -e 's/^.* src \([^ ]*\) .*$/\1/'  

または

ip route | grep src | awk -F 'src' '{print $NF; exit}' | awk '{print $1}'

すべてのUnix OSでテスト済み

0
M.S.Arun

要約:copy/pasteをコマンドラインに入力して、ネットワークIPアドレスを取得します。これはMac(WiFi)で機能するものです。

echo $(ifconfig en0 | grep inet | grep -v inet6 | cut -d" " -f2)

これをbashスクリプト変数に割り当てます。

LOCAL_IP=$(ifconfig en0 | grep inet | grep -v inet6 | cut -d" " -f2)

これは Valentin Rocher および Matt Kropmton による回答に基づいています。

0
C0D3LIC1OU5

現在のIPアドレスを見つけるためのソリューション:

route -n get default|grep interface|awk ‘{ print $2 }’|xargs ipconfig getifaddr

macでのみテスト済み。

0
Mat