python 使用 netstat 命令在 cmd 上获取文件进程名称
python get file process name on cmd using netstat command
我想制作一个简单的程序来激活我本地的 Web 服务器。
我尝试创建一些代码,此代码在 windows 7 64 位中运行良好。但是当我 运行 我的代码在 windows XP32 位上时,这段代码使 windows XP 挂起。
你能帮我解释一下为什么这段代码会导致 windows XP 挂起吗?
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 Server
谢谢
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)
上面的输出是"Apache HTTP Server"
我不知道为什么你的在 XP 中不起作用,但试试上面的代码 (Python 2.7)
基本上:执行命令> 获取相关行> 获取输出中的最后一个字 (PID)> 将 pid 传递给任务列表> 转到任务列表中的相关行> 打印第一个字。
我想制作一个简单的程序来激活我本地的 Web 服务器。 我尝试创建一些代码,此代码在 windows 7 64 位中运行良好。但是当我 运行 我的代码在 windows XP32 位上时,这段代码使 windows XP 挂起。
你能帮我解释一下为什么这段代码会导致 windows XP 挂起吗?
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 Server
谢谢
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)
上面的输出是"Apache HTTP Server"
我不知道为什么你的在 XP 中不起作用,但试试上面的代码 (Python 2.7)
基本上:执行命令> 获取相关行> 获取输出中的最后一个字 (PID)> 将 pid 传递给任务列表> 转到任务列表中的相关行> 打印第一个字。