如何使用bash shell找到计算机的IP地址?

Pau*_*ite 26 unix django bash networking ip-address

我一次又一次地需要启动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
Run Code Online (Sandbox Code Playgroud)

Val*_*her 52

ifconfig en0 | grep inet | grep -v inet6
Run Code Online (Sandbox Code Playgroud)

预计上述产出将采用以下形式:

inet 192.168.111.1 netmask 0xffffff00 broadcast 192.168.111.255

添加一个awk语句来打印第二列以避免使用cut(awk是一个非常标准的unix工具):

ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

我使用以下内容来获取当前IP,当IP的前几个数字始终相同时(用您自己的数字替换192.168.111):

ifconfig | grep 192.168.111 | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

要获取另一台知道其名称的计算机的ip,请尝试(将hostname和192.168.111替换为您自己的值):

ping -c 1 hostname | grep 192.168.11 | grep 'bytes from' | awk '{print $4}' | sed 's/://g'
Run Code Online (Sandbox Code Playgroud)


Joe*_*ert 15

您可能已经知道,但正在运行

python manage.py runserver 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)

使您的机器对网络上的每个人都可见.

您是否需要指定IP?

  • 不,您仍然可以连接到常规IP地址.因此,例如,如果您在计算机上运行该命令,并且您的IP是192.168.0.100,则网络上的计算机仍然通过192.168.0.100访问您的计算机.放入0.0.0.0只是自动完成任务而不是寻找IP.这就是你想要的. (2认同)
  • 嗯,刚看到我从来没有回复过这个.我现在一直使用你的方法,它工作得很好.有点惭愧我不明白我实际上并不需要其他机器连接到0.0.0.0. (2认同)

ede*_*ora 7

这应该和我已经看过的其他命令一样好用:

ifconfig eth0 | grep inet | awk '{print $2}' | cut -d':' -f2
Run Code Online (Sandbox Code Playgroud)
  • 将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̶̶


Sto*_*oic 5

最好的解决方案是:

ifconfig | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/\1/p'
Run Code Online (Sandbox Code Playgroud)


Mat*_*ton 5

人们使用字符计数从ip地址行中提取正确的列,但是将空格用作delim使其可以扩展到不同长度的ip地址...

ifconfig en1 | grep inet | grep -v inet6 | cut -d" " -f2
Run Code Online (Sandbox Code Playgroud)

  • 这是更干净的答案之一,几乎也可以在OS X上使用,尽管我碰巧需要用en0代替en1(或者只是删除网络名称以获取全部)。 (2认同)