python使用netstat命令在cmd上获取文件进程名
我想做一个简单的程序,让我的本地服务器上的web服务器活动。 我已经尝试创建了一些代码,这些代码在Windows7 64位下运行良好。但当我在WindowsXP32位上运行代码时,这段代码会使WindowsXP挂起 你能帮我解释一下为什么这段代码让windows XP挂起吗python使用netstat命令在cmd上获取文件进程名,python,winapi,subprocess,netstat,Python,Winapi,Subprocess,Netstat,我想做一个简单的程序,让我的本地服务器上的web服务器活动。 我已经尝试创建了一些代码,这些代码在Windows7 64位下运行良好。但当我在WindowsXP32位上运行代码时,这段代码会使WindowsXP挂起 你能帮我解释一下为什么这段代码让windows XP挂起吗 def get_web_server(): import win32api import subprocess try: cmd = 'for /f "usebackq tokens=
def get_web_server():
import win32api
import subprocess
try:
cmd = 'for /f "usebackq tokens=5" %i in (`"netstat -aon | findstr "0.0:80""`) do @wmic PROCESS get Name,ProcessId,ExecutablePath | findstr "%i"'
output = subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True).communicate()
try:
windows_exe = (output[0].split('\r\n')[0].strip().split()[0])
except:
windows_exe = None
try:
language, codepage = win32api.GetFileVersionInfo(windows_exe, '\\VarFileInfo\\Translation')[0]
stringFileInfo = u'\\StringFileInfo\\%04X%04X\\%s' % (language, codepage, "FileDescription")
description = win32api.GetFileVersionInfo(windows_exe, stringFileInfo)
except:
description = None
except:
description = None
return description
print get_web_server()
使用XAMPP时win7 64位中的示例输出
Apache HTTP服务器
谢谢
上面的输出是“ApacheHTTP服务器”
我不知道为什么你的在XP中不起作用,但是试试上面的代码(Python 2.7)
基本上:执行命令>获取相关行>获取输出中的最后一个单词(PID)>将PID传递给任务列表>转到任务列表中的相关行>打印第一个单词
上面的输出是“ApacheHTTP服务器”
我不知道为什么你的在XP中不起作用,但是试试上面的代码(Python 2.7)
基本上:执行命令>获取相关行>获取输出中的最后一个单词(PID)>将PID传递到任务列表>转到任务列表中的相关行>打印第一个单词。谢谢您的回答,但我的意思是输出不一样,输出是对文件名的描述。例如:文件httpd.exe->output
apachehttp服务器
谢谢兄弟,但我已经找到了其他替代方法来找到它。使用psutil
modul。感谢您的回答,但我的意思是输出不一样,输出是对文件名的描述。例如:文件httpd.exe->outputapachehttp服务器
谢谢兄弟,但我已经找到了其他替代方法来找到它。使用psutil
modul。
import os
import subprocess
import re
import win32api
pid=subprocess.check_output('netstat.exe -abno | find /i "listening" |find ":80"', shell=True).split('\n', 1)[0].split()[-1]
webserver= subprocess.check_output('tasklist /FI "PID eq '+pid+'" /v /fo List', shell=True).splitlines()[-1].split("Window Title:", 1)[1].rsplit("Window Title:", 1)[0].strip()
def getFileDescription(windows_exe):
try:
language, codepage = win32api.GetFileVersionInfo(windows_exe, '\\VarFileInfo\\Translation')[0]
stringFileInfo = u'\\StringFileInfo\\%04X%04X\\%s' % (language, codepage, "FileDescription")
description = win32api.GetFileVersionInfo(windows_exe, stringFileInfo)
except:
description = "unknown"
return description
print getFileDescription(webserver)