Vraag Hoe vind ik het IP-adres van mijn computer met behulp van de bash-shell?


Zo nu en dan moet ik de Django-ontwikkelserver starten en deze zichtbaar maken voor andere machines op mijn netwerk, zoals hier beschreven:

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

Het IP-adres van mijn machine heeft de neiging om zo nu en dan te veranderen, dus ik zou graag een kleine shell-alias hebben of iets dat de opdracht manage.py wegspoelt met het huidige IP-adres van mijn machine, misschien als volgt:

python manage.py runserver $(COMMAND TO FIND MY MACHINE’S IP ADDRESS GOES HERE):8000

22
2018-05-10 17:16


oorsprong


antwoorden:


ifconfig en0 | grep inet | grep -v inet6

Uitvoer van bovenstaande is naar verwachting in de volgende vorm:

inet 192.168.111.1 netmask 0xffffff00 broadcast 192.168.111.255

Voeg een awk-instructie toe om de tweede kolom af te drukken om gebruik van knippen te voorkomen (awk is een vrij standaard unix-hulpmiddel):

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

Ik gebruik het volgende om het huidige IP-adres te krijgen in een LAN waar de eerste nummers van het IP altijd hetzelfde zijn (vervang 192.168.111 door uw eigen nummers):

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

Om het IP-adres van een andere machine te verkrijgen waarvan u de naam kent, probeert u (vervang hostnaam en 192.168.111 met uw eigen waarden):

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

47
2018-05-10 17:24



Je bent je misschien al bewust, maar loopt

python manage.py runserver 0.0.0.0:8000

maakt uw machine zichtbaar voor iedereen in het netwerk.

Is er een reden waarom u uw IP zou moeten opgeven?


15
2018-05-10 17:19



Thi zou net zo goed moeten werken als andere opdrachten die ik al heb gezien:

ifconfig eth0 | grep inet | awk '{print $2}' | cut -d':' -f2
  • Vervang eth0 door de gewenste interface (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̶ ̶-̶̶̶̶̶̶̶̶̶̶


7
2018-04-25 12:38



De beste oplossing zou zijn om:

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

5
2017-12-25 22:23



Mensen gebruiken tekenaantallen om de juiste kolommen uit de ip-adresregel te trekken, maar het gebruik van spaties als een scheiding maakt dit meer schaalbaar naar ip-adressen met verschillende lengte ...

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

4
2017-12-31 20:25



Dit is een snelle en vuile manier, die werkt onder OSX

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

Krijg in principe alle interfaces met een IPV4-adres, sla localhost over en verkrijg vervolgens de eerste interface.

Gebruik ook het pad naar ifconfig. Ik heb veel shell scriptrem gezien bij gebruik van ex. cron vanwege PATH-fout.


4
2018-04-14 10:33



ifconfig is waarschijnlijk wat je zoekt. U moet het erdoorheen halen grep om wat van de ruis weg te filteren.


3
2018-05-10 17:18