Cái này khá tiện, dùng để lấy ip nội bộ lẫn công khai dễ dàng thay vì phải vào trình duyệt sau đó truy cập những web như thế này chả hạn https://www.whatismyip.com, hoặc phải ifconfig và lần mò trong rừng chữ. Chủ yếu nó dùng để các bác lấy ip này để làm kết quả đầu vào cho một chương trình shell, hoặc đoạn script của các bác, do kết quả trả về là dạng văn bản thuần túy (plain text)
dài dòng đủ rồi, bài viết bắt đầu.
Đây là bài hướng dẫn nhanh về cách lấy internal IP và external IP trên shell/command line (2 cái này còn được gọi là private IP và public IP, nó là cái gì thì đọc ở blog này nhé link )
Ghi chú: những lệnh dưới đây khá là dài dòng, các bác có thể biến nó thành hàm (function), đặt cho nó cái tên dễ nhớ, rồi khi cần cứ gọi nó ra cho dễ. cách làm thì đây (link). Ngoài ra,do phải trích xuất từ kết quả của câu lệnh, nên phải sử dụng lệnh awk rất nhiều, lệnh awk cũng sẽ hoạt động giống gawk và nawk.
1. Lấy Internal IP trên shell/command line
1.1 lấy IP và IPv6 theo interface được chỉ định.
có cần giải thích interface là gì không ? Sau này quên thì chắc em vẫn nhớ nó là gì thôi, vậy nên không giải thích.câu lệnh:
/sbin/ifconfig $1 | grep "inet\|inet6" | awk -F' ' '{print $2}' | awk '{print $1}'$1 là tên của interface, kết quả trả về sẽ có dạng
dòng 1: IPv4
dòng 2: IPv6
kết quả sẽ có 2 dòng, nếu interface nào không có ipv6 thì 1 dòng.
VD:
/sbin/ifconfig eth0 | grep "inet\|inet6" | awk -F' ' '{print $2}' | awk '{print $1}'Tạo một cái hàm với tên int-ip và add nó vào ~/.bashrc hoặc /etc/bashrc, để dễ dàng sửa dụng sau này:
10.20.10.1
0:0:0:0:0:ffff:a14:a01
function int-ip { /sbin/ifconfig $1 | grep "inet\|inet6" | awk -F' ' '{print $2}' | awk '{print $1}'; }sau này cần thì
int-ip
Ví dụ:
int-ip eth0 10.20.10.1 0:0:0:0:0:ffff:a14:a01
1.2 Lấy tất cả ipv4 lẫn v6 của tất cả các interface
/sbin/ifconfig |grep -B1 "inet\|inet6" |awk '{ if ( $1 == "inet" || $1 == "inet6" ) { print " ",$2 } else if ( $1 != "inet" && $1 != "inet6" ) { print $1 } }'
lo: 127.0.0.1 ::1 -- eth0: 192.168.1.11 fe80::3a2c:4aff:fe48:2a55
function int-ips { /sbin/ifconfig |grep -B1 "inet\|inet6" |awk '{ if ( $1 == "inet" || $1 == "inet6" ) { print " ",$2 } else if ( $1 != "inet" && $1 != "inet6" ) { print $1 } }'; }
int-ips lo: 127.0.0.1 ::1 -- eth0: 192.168.1.11 fe80::3a2c:4aff:fe48:2a55
2. Lấy External IP trên shell/command line:
2.1 lấy External IP bằng Lynx
lynx --dump http://ipecho.net/plain
function ext-ip () { lynx --dump http://ipecho.net/plain; }
ip## Example usage ## ext-ip 80.10.10.80
2.2 lấy External IP bằng Curl
curl http://ipecho.net/plain; echo
function ext-ip () { curl http://ipecho.net/plain; echo; }
Hết.ext-ip 80.10.10.80
Không có nhận xét nào:
Đăng nhận xét