【发布时间】:2019-01-17 02:57:36
【问题描述】:
我访问了this页面,但没有成功尝试这些解决方案。
我在 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
- abort('中止扫描')
- 引发 RuntimeError, 'Aborting the scan'
- 系统('退出')
他们都没有在我的情况下工作......
这是否可以从 Ruby 脚本中停止扫描(字面意思是批处理作业)?
【问题讨论】:
-
你的代码都不是我能说的 Windows 批处理文件。
-
@Squashman 添加了屏幕截图以进行澄清。登录脚本是 Ruby .rb 文件,我只是将其中的一部分粘贴到问题中。但是这个脚本是从批处理作业中调用的
-
您仅使用
exit退出登录脚本。如果你用browser.quit退出整个浏览器会发生什么? -
@Casper 是的,browser.quit 将在这种特定情况下工作,但我宁愿在 Ruby 世界中寻找更通用的解决方案....
-
我看了Arachni的源码,实在是没办法了。 Arachni 甚至不会检查登录脚本的退出代码。这甚至可能值得向开发人员提出一个错误问题。但无论如何,这更像是 Arachni 代码中的后勤问题,而不是 Ruby 问题。
标签: ruby batch-file cmd stderr