首页 > 解决方案 > 停止/终止/关闭/杀死/错误 Ruby 脚本中的批处理作业

问题描述

我已访问页面,但未成功尝试这些解决方案。

我在 Windows 10 上运行。我有这个用于 Arachni 安全扫描程序的批处理 (cmd.exe) 文件:

在此处输入图像描述

在此处输入图像描述

arachni ^
--audit-forms ^
--audit-jsons ^
--audit-links ^
--audit-ui-forms ^
--audit-ui-inputs ^
--audit-xmls ^
--browser-cluster-ignore-images ^
--browser-cluster-job-timeout=90 ^
--browser-cluster-pool-size=3 ^
--checks=trainer ^
--http-request-queue-size=100 ^
--http-request-redirect-limit=3 ^
--http-request-timeout=30000 ^
--http-response-max-size=500000 ^
--http-user-agent="PhantomJS / arachni v1.5.1-0.5.12-windows-x86_64" ^
--plugin=login_script:script=%~dp0\LoginScript.rb ^
https://www.example.com

登录脚本(上面批处理脚本的倒数第二行)帮助我登录到应用程序并开始扫描。部分登录脚本(.rb 扩展名)如下所示:

begin
browser.text_field(:id => 'myTextField').wait_until_present(60)
puts 'User successfully lands on MyWebSite home page with the URL ' + browser.url
rescue
puts 'Even after 60 seconds of waiting still unable to reach MyWebSite home page'
exit
end

从救援语句中可以看出,如果找不到某个元素(简而言之,Watir WebDriver),我将尝试终止/关闭/完成/杀死整个批处理作业。我可以清楚地看到,即使等待 60 秒后仍然无法到达 MyWebSite 主页消息显示在控制台中,这意味着救援语句被执行,但在那之后扫描只是继续进一步,因为没有任何尝试阻止它。以下是我试图代替exit陈述的不同变体:

  1. 1号出口
  2. abort('中止扫描')
  3. raise RuntimeError, '中止扫描'
  4. 系统('退出')

他们都没有在我的情况下工作......

这是否可以从 Ruby 脚本中停止扫描(字面意思是批处理作业)?

标签: rubybatch-filecmdstderr

解决方案


我不确定我的问题是否正确,但值得一试。在 Windows 10 上尝试过,它在退出脚本之前成功杀死了任何其他正在运行的进程。

begin   
    fail #lets test fail    
    puts 'User successfully lands on MyWebSite home page with the URL ' + browser.url
rescue
    puts 'Even after 60 seconds of waiting still unable to reach MyWebSite home page'

    success = `Taskkill /IM batch_name.bat /F`
    puts "Killed: #{success}"

    exit #not neccessery?
end

我假设您也可以通过 tasklist 获取批处理 pid,然后通过 /PID 将其杀死,如下面的链接所述。

`Taskkill /PID 26356 /F`

https://tweaks.com/windows/39559/kill-processes-from-command-prompt/

希望能帮助到你。


推荐阅读