mirror of
				https://github.com/xcat2/confluent.git
				synced 2025-10-31 11:22:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/python3
 | |
| import glob
 | |
| import os
 | |
| import select
 | |
| import socket
 | |
| 
 | |
| 
 | |
| def scan_nic(nicidx):
 | |
|     srvs = {}
 | |
|     s6 = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
 | |
|     s6.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 1)
 | |
|     s6.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
 | |
|     s6.bind(('::', 0))
 | |
|     msg = b'M-SEARCH * HTTP/1.1\r\nHOST: [ff02::c]:1900\r\nMAN: "ssdp:discover"\r\nST: urn:dmtf-org:service:redfish-rest:1\r\nMX: 3\r\n\r\n'
 | |
|     s6.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_MULTICAST_IF, nicidx)
 | |
|     s6.sendto(msg, ('ff02::c', 1900))
 | |
|     (rsp, peer) = s6.recvfrom(9000)
 | |
|     print('{}%{}'.format(peer[0], nicidx))
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     for nic in glob.glob('/sys/class/net/*'):
 | |
|         nic = os.path.basename(nic)
 | |
|         try:
 | |
|             driver = os.readlink('/sys/class/net/{}/device/driver/module'.format(nic))
 | |
|         except:
 | |
|             continue
 | |
|         if 'cdc_ether' not in driver:
 | |
|             continue
 | |
|         idx = int(open('/sys/class/net/{}/ifindex'.format(nic)).read())
 | |
|         break
 | |
|     scan_nic(idx)
 |