如何检查SAP服务器是否使用python运行
我正在使用sapgui脚本自动化SAP。使用以下命令调用这些vb脚本如何检查SAP服务器是否使用python运行,python,process,sap,rpa,Python,Process,Sap,Rpa,我正在使用sapgui脚本自动化SAP。使用以下命令调用这些vb脚本 subprocess.call("cmd /c .\\VBScripts\\Login.vbs " + '"' + username + '" ' + '"' + password + '"') 但是,当在服务器窗口未启动时调用脚本时,脚本会随着弹出窗口而停止。因此,我需要检查是否使用python建立了到特定SAP服务器的连接 决定检查SAP任务(在图像中突出显示)是否列在流程列表中。但是,我无法使用python列出这些子
subprocess.call("cmd /c .\\VBScripts\\Login.vbs " + '"' + username + '" ' + '"' + password + '"')
但是,当在服务器窗口未启动时调用脚本时,脚本会随着弹出窗口而停止。因此,我需要检查是否使用python建立了到特定SAP服务器的连接
决定检查SAP任务(在图像中突出显示)是否列在流程列表中。但是,我无法使用python列出这些子进程
如果有人能帮上忙,我将不胜感激。或者,建议一种更好的方法来处理上述情况
为了解决您提出的问题(在启动它们的命令行中列出具有特定字符串的所有进程),我使用带有PID和命令行参数的
wmic
,然后筛选所需的命令行字符串并获取其PID。下面我附加了一个片段,用于查找。还有一个杀死它们的功能
def get_running_processes(targ, name):
pids = []
if targ == 'win':
cmd = "WMIC PROCESS get ProcessId,CommandLine"
else:
cmd = "ps a"
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in proc.stdout:
if name in line:
if targ == 'win':
pid = line.strip().split()[-1]
else:
pid = line.strip().split()[0]
pids.append(pid)
if len(pids):
print 'Found following pids for', name
print [_ for _ in pids]
else:
print 'No processes with', name, 'detected running for this user'
return pids
def kill_prev_instances(targ, pids):
for _ in pids:
if targ == 'win':
kill_cmd = ['wmic', 'process', 'where', 'processid=' + str(_), 'call', 'terminate']
else:
kill_cmd = ['kill', '-9', str(_)]
print 'Killing pid ' + str(_)
subprocess.check_call(kill_cmd, shell=False)
time.sleep(2)
此代码的一些限制:
win
,或者删除Linux的参数和逻辑(如果不需要)select Columns
,然后勾选command line
,然后按OK。现在,用户的所有进程都应该显示其命令行参数李>
ProcessId,CommandLine
如果右键单击
SAP
子进程,然后单击转到详细信息
(或类似内容),是否有办法将会话与其他进程分开?不,它不提供此选项。只有[切换到、前置、最小化、最大化、结束任务]选项。