ruby - 停止/终止/关闭/杀死/错误 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号出口
- abort('中止扫描')
- raise RuntimeError, '中止扫描'
- 系统('退出')
他们都没有在我的情况下工作......
这是否可以从 Ruby 脚本中停止扫描(字面意思是批处理作业)?
解决方案
我不确定我的问题是否正确,但值得一试。在 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/
希望能帮助到你。
推荐阅读
- swift - Swift:“Self”(请求)类型的 Alamofire 值没有成员“responseJSON”扩展
- c# - 安装jenkins的服务器是否需要安装Visual Studio?
- javascript - 如何使旋转块不超出部分?
- sql - 按应用从 BigQuery 获取大量引文数据
- visual-studio-code - 非常新手的问题 - 如何制作一个新的源文件并将其命名为 main.rs?
- java - Cordova 代码推送--source 1.6 中不支持多捕获语句
- c# - 关闭当前焦点的表格
- python - Tkinter / Python:框架没有提升
- c# - System.InvalidOperationException' in System.Data.dll c# 使登录到文件。sql
- collections - 如何在地址集合上调用 to_socket_addrs?