Tìm kiếm Blog này

Thứ Bảy, 18 tháng 3, 2017

Cách lấy IPv4/IPv6 (internal/external) trên shell/terminal/command line

source: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
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}'
10.20.10.1
0:0:0:0:0:ffff:a14:a01
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:
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

lần này sẽ lấy toàn bộ.
/sbin/ifconfig |grep -B1 "inet\|inet6" |awk '{ if ( $1 == "inet" || $1 == "inet6" ) { print " ",$2 } else if ( $1 != "inet" && $1 != "inet6" ) { print $1 } }'
Ví dụ một kết quả:
lo:
127.0.0.1
::1
--
eth0:
192.168.1.11
fe80::3a2c:4aff:fe48:2a55
kết quả trả về sẽ được phân cách bằng dấu -- giữa các interface, và chúng ta cũng sẽ biến nó thành cái hàm với tên bất kì (VD:int-ips)
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 } }'; }
VD:
int-ips
lo:
127.0.0.1
::1
--
eth0:
192.168.1.11
fe80::3a2c:4aff:fe48:2a55
Xong phần internal IP

2. Lấy External IP trên shell/command line:

Ở đây chúng ta sẽ sử dụng dịch vụ của ipecho.net, hay ở chỗ thằng này có phần gửi trả kết quả dạng plain text. Dưới đây sẽ hướng dẫn cách dùng 2 ứng dụng Lynx và Curl để lấy cái kết quả này.

2.1 lấy External IP bằng Lynx

lynx --dump http://ipecho.net/plain
để ngắn gọn, ta cũng tạo 1 cái hàm với tên ext-ip
function ext-ip () { lynx --dump http://ipecho.net/plain; }
VD:
ip## Example usage ##
ext-ip
80.10.10.80

2.2 lấy External IP bằng Curl

curl http://ipecho.net/plain; echo
và ta cũng tạo 1 cái hàm
function ext-ip () { curl http://ipecho.net/plain; echo; }
VD:
ext-ip
80.10.10.80
Hết.

Chủ Nhật, 12 tháng 2, 2017

Sử dụng hàm (function) thực thi trước để rút ngắn câu lệnh dài


source: Tự biên.
Đây là 1 cách rút ngắn những câu lệnh dùng thường xuyên cho dễ nhớ, thay vì viết nó thành 1 shell script rồi bỏ vào các thư mục $PATH. Bí kíp nằm ở 2 file ~/.bashrc/etc/bashrc. 2 file này là cái gì thì hãy xem topic hỏi đáp của member Justin này: link . Cho nhanh gọn thì cứ mỗi thao tác mở terminal lên thì nó sẽ thực thi file này trước, vậy nên add hàm (function) vào các bác có thể gọi nó ra như các bác tự đánh vào từ trước.
cú pháp xài hàm thì y như bình thường các bác viết script shell thôi.
function tenham { khoi lenh; }
Chú ý cái khoảng trắng nha.
vd:
echo 'function kiemtraketnoi { ping 8.8.8.8; }' >> ~/.bashrc
sau này muốn ping 8.8.8.8 thì chỉ cần gõ kiemtr [tab] là ra.
kết hợp với các biến vị trí $0 $1 $2 link cho phù hợp sở thích là có những câu lệnh cho riêng chúng ta.vậy nên hãy thường xuyên sử dụng cái này cho đỡ cực và chán nản với những dòng lệnh.
Bài viết tự viết trên kinh nghiệm cá nhân nhờ đọc và dịch cho các bác trên này mà phát hiện ra đấy, sai sót gì hãy bình luận phía dưới nhé.

Thứ Bảy, 11 tháng 2, 2017

Hướng dẫn cài nfs server trên fedora, dùng kodi kết nối xem phim.

bài viết dịch từ cái admin guilde từ wiki của fedora https://fedoraproject.org/wiki/Administration_Guide_Draft#NFS
Rất hữu dụng nhé, đây là một dịch vụ file server, mấy cái android box chạy kodi của các bác dùng cái này kết nối xem phim thả phanh.
Bắt đầu bài dịch nha.