热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

与bat_ELKstack批量启动BAT批处理文件编写

最近在ELKstack的环境搭建后小组组长向我提出了一个任务,那就是因为ELK需要打开的任务太多了能不能点击一个就让他自动启动完呢?答案当然是肯定的&#

最近在ELK stack的环境搭建后

小组组长向我提出了一个任务,那就是因为ELK 需要打开的任务太多了

能不能点击一个就让他自动启动完呢?

答案当然是肯定的,我选择使用了bat批处理来进行该操作

761b16ad6cbb779e8ec9e43c8a7209f0.png

创建bat文件

主要步骤如下

  • 在所需要创建任务的任务文件夹下面创建一个bat文件
  • 查询是否开启服务
  • 关闭已经开启的服务
在所需要创建任务的任务文件夹下面创建一个bat文件

使用同目录是为了方便在移植到其他服务器时,可以不修改bat文件的引用路径

# 该符号后为注释 请忽略#关闭输出echo off#设置当前窗口编码为UTF8chcp 65001#设置变量引用路径set elasticsearch_path=%cd%elasticsearch-6.4.3binelasticsearch.batset logstash_path=%cd%logstash-6.5.0binun.batset kibana_path=%cd%kibana-6.4.3-windows-x86_64binkibana.bat

设置所需要启动服务的引用路径

查询是否开启服务

启动是没问题了 可是我发现了一个问题,如何改服务已经启动了,那可如何是好?

于是我决定在启动之前检测是否开启了服务,开启了则使用taskkill /pid pid关闭当前开启的服务

可是ELK 任务启动的pid是随机的,小编看了一下网上介绍的方法,没有太理解

但是发现了一个可以通过windows窗口名来检索当前开启的窗口

而刚好在批量处理中可以指定开启任务的窗口名

# 查找elasticsearch为开通命名的窗口tasklist /fi "windowtitle eq elasticsearch*"

在查找中 能使用通配符* 但是只能将通配符放在后 不能放在前

# 这样是无效的tasklist /fi "windowtitle eq *elasticsearch"关闭已经开启的服务

在查找中 能使用通配符* 但是只能将通配符放在后 不能放在前

# 这样是无效的tasklist /fi "windowtitle eq *elasticsearch"

可以查看到当前的任务以后 则需要获取当前任务的pid 否则我们仍然不能kill该任务

可以通过bat命令的for循环来获取该pid

# skip为忽略的行数 tokens 为取第几列 delims为分隔符# 若仍有不解可自行百度bat for参数详解for /f "skip=3 tokens=2 delims= " %%a in ('tasklist /fi "windowtitle eq elasticsearch*"') do ( ...sth )

获取到以后pid以后 则可以使用taskkill /pid 刚刚查询到的 pid 来kill到已经开启的任务啦

taskkill /pid %%a

以上为主要部分,小编将贴下自己制作的bat代码

echo offchcp 65001set elasticsearch_path=%cd%elasticsearch-6.4.3binelasticsearch.batset logstash_path=%cd%logstash-6.5.0binun.batset kibana_path=%cd%kibana-6.4.3-windows-x86_64binkibana.batecho "===================================================================="echo "kill elasticsearch......"echo "===================================================================="for /f "skip=3 tokens=2 delims= " %%a in ('tasklist /fi "windowtitle eq elasticsearch*"') do (if "%%a"=="No" (echo "no elasticsearch killed...") else (echo "kill elasticsearch PID : %%a"taskkill /pid %%a))echo "===================================================================="echo "kill logstash......"echo "===================================================================="for /f "skip=3 tokens=2 delims= " %%b in ('tasklist /fi "windowtitle eq logstash*"') do (if "%%b"=="No" (echo "no elasticsearch killed...") else (echo "kill elasticsearch PID : %%b"taskkill /pid %%b))echo "===================================================================="echo "kill kibana......"echo "===================================================================="for /f "skip=3 tokens=2 delims= " %%c in ('tasklist /fi "windowtitle eq 管理员: Kibana*"') do (if "%%c"=="No" (echo "no elasticsearch killed...") else (echo "kill elasticsearch PID : %%c"taskkill /pid %%c))if exist %elasticsearch_path% (goto start_es)else (echo "%elasticsearch_path% could not find......"goto end):start_esecho "===================================================================="echo "start elasticsearch......"echo "===================================================================="start "elasticsearch" %elasticsearch_path%echo "等待elasticsearch启动...清除自动生成索引..."TIMEOUT /t 30 /NOBREAKcd/d %cd%elasticsearch_curatorcurator --config config/curator.yml config/action.ymlif exist %logstash_path% (goto start_logstash) else (echo "%logstash_path% could not find......"goto end):start_logstashecho "===================================================================="echo "start logstash......"echo "===================================================================="start "logstash" %logstash_path%if exist %kibana_path% (goto start_kibana) else (echo "%kibana_path% could not find......"goto end):start_kibanaecho "===================================================================="echo "start kibana......"echo "===================================================================="start "kibana" %kibana_path%echo "start finished......"echo "====================================================================":end

注意goto 中执行的:代码块中 是会继续往下执行的

例如

goto a:aecho "123":becho "321"

执行结果为 123 321 并不会执行 :a 后结束执行

所以需要自己理清逻辑 是否要继续往下执行

以上为解决方案,实现的方式有多种,这只是其中一种

可能相比与经验丰富写出的比较劣质,若存在更好方法,大家可以在评论区指出讨论



推荐阅读
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在《Linux高性能服务器编程》一书中,第3.2节深入探讨了TCP报头的结构与功能。TCP报头是每个TCP数据段中不可或缺的部分,它不仅包含了源端口和目的端口的信息,还负责管理TCP连接的状态和控制。本节内容详尽地解析了TCP报头的各项字段及其作用,为读者提供了深入理解TCP协议的基础。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
author-avatar
手机用户2502916627
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有