【问题标题】:Unable to run a windows task that makes https request under SYSTEM account无法运行在 SYSTEM 帐户下发出 https 请求的 Windows 任务
【发布时间】:2018-10-01 16:09:08
【问题描述】:

我创建了一个调用三个独立bat文件的windows cmd文件。我想创建一个调用此 cmd 文件并每 5 分钟运行一次的 Windows 任务。问题是这个任务只有在我登录系统时才能正常运行。 但我无法让这个任务继续运行“无论我是否登录”

我什至让我的同事登录到那台机器并在他的帐户下运行这个任务——它成功了。我在那台机器上创建了一个本地管理员用户,以该用户身份登录,尝试运行此任务 - 它没有工作 - 脚本在 post_results.bat 时永远等待。我什至尝试安排一个基本上做同样事情的詹金斯作业 - 它没有工作 - 詹金斯作业在 post_results.bat 时永远等待(我在等待大约 20 分钟后终止了詹金斯作业)。

以下是这些任务正在执行的操作的摘要:

run_all.cmd

call "run_test.bat"
call "post_results.bat"
call "clean.bat"

run_test.bat - 执行 jmeter 脚本

C:\Users\Administrator\LS2\apache-jmeter-4.0\bin\jmeter -n -t api_strategy_synthetic_tests.jmx -JTestEnv=amer1 -l Result_log.jtl

post_results.bat - 调用 python 脚本将 jmeter 测试结果发布到 datadog

python post_jmeter_results_to_datadog.py Result_log.jtl

post_jmeter_results_to_datadog.py - 使用 datadog python api 将指标发布到 datadog

#!/usr/bin/env python3
import sys
import pandas as pd
from datadog import initialize, api

options = {
    'api_key': <API_KEY>,
    'app_key': <APPLICATION_KEY>
}
initialize(**options)

jtl_file = sys.argv[1]
df = pd.read_csv(jtl_file)
for index, row in df.iterrows():
    tag = "success:" + str(row['success'])
    api.Metric.send(
        metric=row['label'],
        points=[(row['timeStamp']/1000,row['elapsed'])],
        tags=[tag]
        )

clean.bat - 删除 jmeter 测试结果文件

rmdir /s /q "errors"
del "jmeter.log"
del "Result_log.jtl"

我只需要能够每 5 分钟运行一次此任务。如果有人能够看到我做错了什么并指出...我将非常感激。

【问题讨论】:

  • 如果您从其他帐户运行脚本,您需要确保该脚本指定其工作目录或使用完整路径。 (您发布的.cmd.bat 文件,不要那样做!)
  • 谢谢康波。那是一个问题。另一个问题是代理设置……我和我同事的帐户都设置为特定的代理主机,而 SYSTEM 帐户禁用了该代理。一旦我重新打开代理......它开始按预期工作!

标签: windows batch-file jmeter taskscheduler datadog


【解决方案1】:

您可以创建一个 PowerShell 脚本来远程执行批处理脚本。 甚至您也可以使用 Windows 任务计划程序来计划您的 PowerShell 脚本,它会根据您的设置运行。

【讨论】:

    猜你喜欢
    • 2014-11-07
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多