Chủ Nhật, 19 tháng 8, 2012

Phân giải DNS bằng Python

Hôm nay chúng ta viết 1 chương trình nhỏ bằng Python để làm 1 việc đơn giản là phân giải domain name thành địa chỉ IP. Ở trên Linux hay Windows thì chúng ta làm việc này bằng cách gõ lệnh:











#nslookup ten_domain
thì ra được địa chỉ IP của domain đó. Với Python chúng ta viết 1 chương trình như sau:

#!/usr/bin/python
import socket
# Module chuyên xử lý về socket
 
hostname = 'hocbaomat.com'
# tạo ra 1 biến kiểu xâu (string) với giá trị là 'hocbaomat.com'
 
addr = socket.gethostbyname(hostname)
#hàm gethostbyname của module socket sẽ phân giải tên
#chứa trong biến hostname thành địa chị IP
#và IP sẽ được lưu vào biến addr
 
print 'Dia chi cua ', hostname, ' la:', addr
#In địa chỉ IP của biến addr ra màn hình

Lưu nội dung trên vào một file có tên là nslookup_hoc_bao_mat.py, thêm thuộc tính ‘execute’ cho nslookup_hoc_bao_mat.py rồi chạy. Kết quả có được là:
 184.154.160.13
Viết 1 chương trình bằng Python quả là đơn giản, phải không các bạn. Ngoài ra nếu chúng ta muốn phân giải tên domain khác thì chúng ta chỉ việc thay biến hostname với giá trị là tên domain mà chúng ta cần phân giải, ví dụ:
hostname = 'wordpress.org'
Như vậy bài này dừng ở đây, cám ơn các bạn đã quan tâm!
Ảnh nguồn tham khảo: http://www.smashingtips.com

2 nhận xét:

  1. Chào admin, em là người ngoại đạo, đang tự mày mò học lập trình với python này. Em muốn hỏi bây giờ nếu muốn thêm một trường để người dùng tự nhập liệu DNS thì sử dụng raw_input() đúng không, và cách sử dụng như thế nào trong cụ thể trường hợp này. XIn hãy giúp đỡ, cảm ơn ạ.

    Trả lờiXóa
    Trả lời
    1. def gethost():
      import socket
      hostname = input('Enter a host name: ')
      while True:
      if not hostname:
      break
      addr = socket.gethostbyname(hostname)
      print('The address of %s is %s' %(hostname, addr))


      Xóa