您好,登錄后才能下訂單哦!
在Linux中判斷一臺主機(jī)是否可達(dá),可以使用ping命令,而判斷端口是否打開,可以使用telnet命令,但是telnet命令沒有超時時間的參數(shù),使用起來不是很方便,那么可以利用Python來完成一個端口掃描的功能
socket實現(xiàn)端口掃描
#!/usr/bin/env python import socket def get_ip_status(ip,port): server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: server.connect((ip,port)) print('{0} port {1} is open'.format(ip, port)) except Exception as err: print('{0} port {1} is not open'.format(ip,port)) finally: server.close() if __name__ == '__main__': host = '10.0.0.11' for port in range(20,100): get_ip_status(host,port)
telnetlib實現(xiàn)端口掃描
import telnetlib def get_ip_status(ip,port): server = telnetlib.Telnet() # 創(chuàng)建一個Telnet對象 try: server.open(ip,port) # 利用Telnet對象的open方法進(jìn)行tcp鏈接 print('{0} port {1} is open'.format(ip, port)) except Exception as err: print('{0} port {1} is not open'.format(ip,port)) finally: server.close() if __name__ == '__main__': host = '10.0.0.11' for port in range(20,100): get_ip_status(host,port)
多線程實現(xiàn)高效掃描
#!/usr/bin/env python import telnetlib import threading def get_ip_status(ip,port): server = telnetlib.Telnet() try: server.open(ip,port) print('{0} port {1} is open'.format(ip, port)) except Exception as err: print('{0} port {1} is not open'.format(ip,port)) finally: server.close() if __name__ == '__main__': host = '10.0.0.11' threads = [] for port in range(20,100): t = threading.Thread(target=get_ip_status,args=(host,port)) t.start() threads.append(t) for t in threads: t.join()
以上這篇python實現(xiàn)指定ip端口掃描方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。