通过执行 pscp 的 Windows 任务计划程序运行 python 脚本时出现问题

新手上路,请多包涵

不确定是否有人遇到过这个问题,但我会采纳有关故障排除和/或替代方法的建议。

我有一台 Windows 2008 服务器,我在其上运行多个计划任务。其中一项任务是使用 pscp 登录 linux 框的 python 脚本,检查新文件,如果有任何新文件,则将它们复制到 C: 驱动器上的本地目录。我也在关键点对脚本进行了一些登录,我正在使用 logging.basicConfig(level=DEBUG)

我使用变量 command = 'pscp -pw xxxx name@ip:/ c:\local_dir' 构建命令,然后使用 subprocess.call(command) 来执行命令。

现在这是奇怪的部分。如果我从命令行手动运行脚本,它工作正常。下载并处理新文件。但是,如果任务计划程序运行该脚本,则不会下载任何新文件。该脚本在同一用户下运行,但会产生不同的结果。

根据脚本创建的日志文件和linux box上的日志文件,脚本成功登录到linux box。但是,尽管有新文件,但没有下载任何文件。同样,当我通过命令行运行它时,会下载文件。

有任何想法吗?建议,替代方法?

谢谢。

原文由 user1070061 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 614
2 个回答

尝试在 Linux VM 上打开 MS Access 数据库时,我遇到了同样的问题。在 Windows 7 命令提示符下运行脚本有效,但在任务计划程序中运行脚本无效。使用 Task Scheduler,它会找到数据库并验证它是否存在,但不会返回其中的表。

解决方案是让 Task Scheduler 将 cmd 作为程序/脚本运行,参数为 /c python C:\path\to\script.py (在 Add arguments (optional) 下)。

我不能告诉你为什么这有效,但它解决了我的问题。

原文由 Brad Posthumus 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 Windows 任务计划程序,但请确保填写“可选”字段“开始于”。

在 Task Scheduler 应用程序中,添加指定要运行“doSomeWork”的 python 文件的操作,并使用包含该文件的目录填写开始于(可选)输入。例如,如果您有一个 python 文件:

 C:\pythonProject\doSomeWork.py

你会输入:

 Program/Script: doSomeWork.py

Start in (optional): C:\pythonProject

原文由 Erkin Djindjiev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题