


Utilisez Python pour trouver 9 ports inactifs consécutifs
Cet article présente principalement la méthode de Python pour trouver 9 ports inactifs consécutifs. Les amis intéressés peuvent se référer à
Exigences du projet
Lors de l'installation d'un certain logiciel, vous devez remplir le port libre lors de la configuration. Vérifier si un certain port des 5 plateformes est occupé Les 5 plateformes sont windows,linux, aix, hp, solaris
2. Le plan de mise en œuvre est Deux types de
1. Utilisezdef isInuse(ipList, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) flag=True for ip in ipList: try: s.connect((ip, int(port))) s.shutdown(2) print '%d is inuse' % port flag=True break except: print '%d is free' % port flag=False return flag
def getLocalIp(): localIP = socket.gethostbyname(socket.gethostname()) return localIP
import sys import os import socket def isInuse(ipList, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) flag=True for ip in ipList: try: s.connect((ip, int(port))) s.shutdown(2) print '%d is inuse' % port flag=True break except: print '%d is free' % port flag=False return flag def getLocalIp(): localIP = socket.gethostbyname(socket.gethostname()) return localIP def checkNinePort(startPort): flag = True ipList = ("127.0.0.1","0.0.0.0",getLocalIp()) for i in range(1, 10): if (isInuse(ipList, startPort)): flag = False break else: startPort = startPort + 1 return flag, startPort def findPort(startPort): while True: flag, endPort = checkNinePort(startPort) if (flag == True): #ninePort is ok break else: startPort = endPort + 1 return startPort def main(): startPort=51988 # startPort = int(sys.argv[1]) print findPort(startPort) main()
netstat - tnpl | grep 321 tcp 0 0 10.173.1.208:3211 0.0.0.0:* LISTEN 55563/*** tcp 0 0 0.0.0.0:3212 0.0.0.0:* LISTEN 55586/*** tcp 0 0 10.173.1.208:3213 0.0.0.0:* LISTEN 55707/*** tcp 0 0 0.0.0.0:3214 0.0.0.0:* LISTEN 54272/java tcp 0 0 0.0.0.0:3215 0.0.0.0:* LISTEN 54272/java tcp 0 0 10.173.1.208:3216 0.0.0.0:* LISTEN 54822/*** tcp 0 0 10.173.1.208:3217 0.0.0.0:* LISTEN 34959/*** tcp 0 0 10.173.1.208:3218 0.0.0.0:* LISTEN 54849/***
author = 'I316736' import os import platform import sys def isInuseWindow(port): if os.popen('netstat -an | findstr :' + str(port)).readlines(): portIsUse = True print '%d is inuse' % port else: portIsUse = False print '%d is free' % port return portIsUse def isInuseLinux(port): #lsof -i:4906 #not show pid to avoid complex if os.popen('netstat -na | grep :' + str(port)).readlines(): portIsUse = True print '%d is inuse' % port else: portIsUse = False print '%d is free' % port return portIsUse def isInuseAix(port): if os.popen('netstat -Aan | grep "\.' + str(port) + ' "').readlines(): portIsUse = True print '%d is inuse' % port else: portIsUse = False print '%d is free' % port return portIsUse def isInuseHp(port): if os.popen('netstat -an | grep "\.' + str(port) + ' "').readlines(): portIsUse = True print '%d is inuse' % port else: portIsUse = False print '%d is free' % port return portIsUse def isInuseSun(port): if os.popen('netstat -an | grep "\.' + str(port) + ' "').readlines(): portIsUse = True print '%d is inuse' % port else: portIsUse = False print '%d is free' % port return portIsUse def choosePlatform(): #'Windows-7-6.1.7601-SP1' #'AIX-1-00F739CE4C00-powerpc-32bit' #'HP-UX-B.11.31-ia64-32bit' #'Linux-3.0.101-0.35-default-x86_64-with-SuSE-11-x86_64' #'SunOS-5.10-sun4u-sparc-32bit-ELF' machine = platform.platform().lower() if 'windows-' in machine: return isInuseWindow elif 'linux-' in machine: return isInuseLinux elif 'aix-' in machine: return isInuseAix elif 'hp-' in machine: return isInuseHp elif 'sunos-' in machine: return isInuseSun else: print 'Error, sorry, platform is unknown' exit(-1) def checkNinePort(startPort): isInuseFun = choosePlatform() nineIsFree = True for i in range(1, 10): if (isInuseFun(startPort)): nineIsFree = False break else: startPort = startPort + 1 return nineIsFree, startPort def findPort(startPort): while True: flag, endPort = checkNinePort(startPort) if (flag == True): # ninePort is ok break else: startPort = endPort + 1 return startPort def main(startPort): firstPort=findPort(startPort) print 'First port of nine free ports is ', firstPort if name == 'main' : if len(sys.argv) > 1: print len(sys.argv) startPort = int(sys.argv[1]) else: startPort = 500 main(startPort)
Résumé des points de connaissances pertinents
os.popen()
Vous pouvez appeler certaines commandes shell du système
os.popen() .readlines()
Lire les informations d'écho après avoir appelé la commande shell
netstat -tnpl -tnpl 各个参数的含义 -l或--listening 显示监控中的服务器的Socket。 -n或--numeric 直接使用IP地址,而不通过域名服务器。 -p或--programs 显示正在使用Socket的程序识别码和程序名称。 -t或--tcp 显示TCP传输协议的连线状况 ---------- tcp 0 0 10.173.1.208:4903 0.0.0.0:* LISTEN 54849/jsagent 最后的54849/jsagent 表示 进程号 54849 进程名 jsagent
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Utilisation de Python dans Linux Terminal ...

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

Fastapi ...
