it-swarm-vi.com

Lệnh Shell để lấy địa chỉ IP?

Có lệnh bash để tìm địa chỉ IP cho hộp Ubuntu không? Tôi cần tìm địa chỉ IP để tôi có thể ssh vào máy sau.

25
opierce

/sbin/ifconfig -a

32
mpbloch

Bạn có thể dùng:

/bin/ip addr
26
Robert Swisher

Nếu bạn có một địa chỉ nội bộ đang sử dụng, hãy kiểm tra

curl http://myip.dnsomatic.com

có thể là một ý tưởng tốt trên vỏ unix.
[.___.] Hoặc, chỉ cần đưa URL đó vào trình duyệt của bạn.


Nếu bạn nhận được câu trả lời khác với "ifconfig -a" kết quả,
[.__.] the ifconfig đã cho địa chỉ nội bộ của bạn - có thể sẽ không hoạt động từ bên ngoài.


Ngay cả khi tất cả có vẻ ổn, bạn vẫn có thể đặt tường lửa sẽ không cho phép các kết nối đến ssh.
[.___.] Tại thời điểm nào bạn nên thử cổng quan tâm từ trình duyệt trên máy tại,

http://www.canyouseeme.org/

Điều đó sẽ xác nhận kết nối thông qua,

  • địa chỉ IP bên ngoài (hiển thị nó cho bạn trên trang đó)
  • NAT, cảng chuyển tiếp
  • Tường lửa
19
nik

/bin/hostname -i

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

Nếu bạn cần địa chỉ nội bộ của bạn nối thêm giao diện của bạn sau ifconfig, ví dụ:.

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

Nếu bạn đứng sau NAT và cần IP công cộng, hãy sử dụng:

wget -q -O - checkip.dyndns.org | sed -e 's /. Địa chỉ IP hiện tại: //' -e 's /<. $ // '

lấy từ: http://www.go2linux.org/what-is-my-public-ip-address-with-linux

6
JakeRobinson

Nếu bạn có nhiều giao diện, có thể hữu ích để chỉ định giao diện nào bạn muốn IP. nếu bạn muốn địa chỉ IPV4 của giao diện 'eth0':

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

nếu bạn muốn địa chỉ IPV6 của giao diện 'eth0':

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

nếu bạn muốn tìm kiếm IP giữa hai giao diện phổ biến của máy tính xách tay, wlan0 và eth0:

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
4
LoreLLo

Nếu bạn cần tìm ra địa chỉ IP của bộ định tuyến, bạn có thể chạy lệnh này.

Đào + myip ngắn.opendns.com @ 208,67.222.222 @ 208,67.220.220

Nếu bạn đang sử dụng OpenDNS cho máy chủ dns của mình, bạn có thể rút ngắn nó thành:

Đào + myip.opendns.com ngắn

Bạn cũng có thể sử dụng lệnh này.

cuộn tròn http://myip.dnsomatic.com
3
Brad Gilbert

Chỉ cần cuộn tròn này trang :

$ curl wtfismyip.com/text

3
mansi
LOCAL_IP=`/bin/hostname -I | sed 's/ //g'`
2
Mohammed Saqib Rajput

Đây cũng là một dòng hoạt động trên Linux và OS X và nó sẽ trả về địa chỉ đầu tiên không phải là cục bộ:

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

Gửi tín dụng đến https://stackoverflow.com/a/13322549/99834

2
sorin

Cách đơn giản nhất để nói về nó có lẽ là

ifconfig eth0

giả sử máy có một địa chỉ IP duy nhất trên giao diện có dây mặc định - bạn có thể cần

ifconfig wlan0

nếu nó trên WiFi.

1
David North
ip address show scope link

Nó sẽ cho bạn thấy địa chỉ IP của cuộc sống - có liên kết - giao diện. Nhưng nó không phải là một lệnh bash. Bash không có khả năng biết về IP và mạng.

1
Saabi

Điều tôi hiểu là bạn muốn kết nối một máy ubfox từ xa có ip động. Truy cập trang web dyndns.org và mở một tài khoản miễn phí. Sau đó, trên máy từ xa, bạn cần cài đặt một công cụ ip động.

Sudo aptitude install dyndns-client

để bạn có thể ssh máy từ xa thông qua

ssh [email protected]

Vì vậy, sau khi cấu hình, bạn sẽ không bao giờ cần địa chỉ IP máy từ xa.

1
rainman

Đây là những gì tôi đang sử dụng:

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
jlliagre

nếu bạn chỉ cần một IP của giao diện cụ thể, bạn có thể làm:

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

Nếu bạn đang tìm kiếm địa chỉ IP công cộng của hộp , bạn có thể sử dụng như sau:

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

Bạn có thể sử dụng các tùy chọn Dig(1) như -4 Hoặc -6 Để tìm địa chỉ IPv4 hoặc IPv6; Google sẽ cung cấp câu trả lời trong bản ghi loại TXT, loại này sẽ có dấu ngoặc kép xung quanh nó khi được trình bày bởi Dig; nếu sau đó bạn muốn sử dụng biến với các tiện ích như traceroute, bạn phải sử dụng cái gì đó như tr (1) để xóa các trích dẫn đã nói.

Các tùy chọn khác bao gồm whoami.akamai.netmyip.opendns.com, Trả lời bằng AAAAA records (thay vì TXT như trong ví dụ trên từ Google ), vì vậy, họ không yêu cầu xóa dấu ngoặc kép:

  • 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

Đây là tập lệnh mẫu sử dụng tất cả các tùy chọn ở trên để đặt các biến:

#!/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}"

Nếu bạn đang tìm kiếm một địa chỉ IP riêng hoặc cho một tập hợp tất cả các địa chỉ IP được gán cho hộp, bạn có thể sử dụng một số kết hợp ifconfig (trên BSD và GNU/Linux ), ip addr (Trên GNU/Linux), hostname (tùy chọn -i-I Trên GNU/Linux) và - netstat để xem chuyện gì đang xảy ra.

0
cnst

Tôi đã từng đánh golf việc trích xuất địa chỉ IP trên Linux:

http://www.catonmat.net/blog/golfing-the-extraction-of-ip-addresses-from-ifconfig/

0
Peter Krumins