티스토리 뷰
traceroute는 로컬에서 목적지 서버로 가는 네트워크 경로를 확인해주는 툴인데, 이를 Python으로 구현한 예제입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43  | #!/usr/bin/python import socket def main(dest_name):     dest_addr = socket.gethostbyname(dest_name)     port = 33434     max_hops = 30     icmp = socket.getprotobyname('icmp')     udp = socket.getprotobyname('udp')     ttl = 1     while True:         recv_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)         send_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, udp)         send_socket.setsockopt(socket.SOL_IP, socket.IP_TTL, ttl)         recv_socket.bind(("", port))         send_socket.sendto("", (dest_name, port))         curr_addr = None         curr_name = None         try:             _, curr_addr = recv_socket.recvfrom(512)             curr_addr = curr_addr[0]             try:                 curr_name = socket.gethostbyaddr(curr_addr)[0]             except socket.error:                 curr_name = curr_addr         except socket.error:             pass         finally:             send_socket.close()             recv_socket.close()         if curr_addr is not None:             curr_host = "%s (%s)" % (curr_name, curr_addr)         else:             curr_host = "*"         print "%d\t%s" % (ttl, curr_host)         ttl += 1         if curr_addr == dest_addr or ttl > max_hops:             break if __name__ == "__main__":     main('google.com')  | cs | 
'프로그래밍' 카테고리의 다른 글
| Python 시간 변환 (0) | 2020.03.06 | 
|---|---|
| Python 스위치에서 트래픽 정보 수집 (0) | 2020.03.06 | 
| Python 여러가지 싱글톤(singleton) 구현방법 (0) | 2020.03.02 | 
| Python 매직 메소드와 연산자 오버로딩 (0) | 2020.02.22 | 
| Python Flask-RESTPlus로 API 서버 구축 (0) | 2020.02.20 | 
					댓글
						
					
					
					
				
			warpmemory
    
										공지사항
										
								
							
								
								
									최근에 올라온 글
									
							
								
								
									최근에 달린 댓글
									
							
								
								- Total
 
- Today
 
- Yesterday
 
									페이지
									
								
							
								
								
									TAG
									
							
								
								- apache
 - 명령어
 - RESTful
 - httpd
 - limits
 - mysql
 - example
 - check
 - client
 - command
 - PowerShell
 - engineering
 - Python
 - code
 - File
 - 예제
 - 번역
 - deview
 - 이슈처리
 - monitoring
 - Linux
 - MariaDB
 - configuration
 - 외부링크
 - Web
 - error
 - Windows
 - Ansible
 - Module
 - 코드
 
| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
									글 보관함