Shell脚本——kafka集群启停

2023-05-16

部署kafka集群的服务器名称为:node101、node102、node103。

批量启动、停止zookeeper,查看zookeeper开启状态

在/opt/module/zookeeper/bin/目录中,新建zk.sh脚本文件

root@test101 bin$ touch zk.sh
root@test101 bin$ vim zk.sh

将以下内容写到zk.sh中

#!/bin/bash

array=(101 102 103)  #定义数组

case $1 in
"start"){
    for (( i=0;i<${#array[@]};i++ ))
    do
        echo  ---- zookeeper node${array[i]} 启动 ----
        if ping -c 1 -w 1 node${array[i]} > /dev/null;then
            #判断当前节点与目标节点之间能否ping通;-c表示次数;-w表示等待时间(单位:秒)
            ssh node${array[i]} "/opt/module/zookeeper/bin/zkServer.sh start"
                #双引号内为zookeeper启动指令,写入zkServer.sh的绝对路径
        else
            echo "zookeeper node${array[i]} 网络断开连接,启动失败"
        fi
    done
}
;;
"stop"){
    for (( i=0;i<${#array[@]};i++ ))
    do
        echo  ---- zookeeper node${array[i]} 停止 ----
        if ping -c 1 -w 1 node${array[i]} > /dev/null;then
            ssh node${array[i]}i "/opt/module/zookeeper/bin/zkServer.sh stop"
        else
            "zookeeper node${array[i]} 网络断开连接,操作失败"
        fi
    done
}
;;
"status"){
    for (( i=0;i<${#array[@]};i++ ))
    do
        echo  ---- zookeeper node${array[i]} 状态 ----
        if ping -c 1 -w 1 node${array[i]} > /dev/null;then
            ssh node${array[i]} "/opt/module/zookeeper/bin/zkServer.sh status"
        else
            "zookeeper node${array[i]} 网络断开连接,无法获取状态信息"
        fi
    done
}
;;
esac

退出后添加可执行权限

root@test101 bin$ chmod 777 zk.sh

zk.sh脚本使用

root@test101 bin$  ./zk.sh start  #开启zookeeper
root@test101 bin$  ./zk.sh stop  #停止zookeeper
root@test101 bin$  ./zk.sh status  #查看zookeeper开启状态

批量启动、停止kafka,查看kafka开启状态

在/opt/module/kafka/bin/目录中,新建kf.sh脚本文件

root@test101 bin$ touch kf.sh
root@test101 bin$ vim kf.sh

将以下内容写到kf.sh中,

#!/bin/bash

array=(101 102 103)

case $1 in
"start"){
    for (( i=0;i<${#array[@]};i++ ))
    do
        echo "---- 启动 node${array[i]} kafka ----"
        if ping -c 1 -w 1 node${array[i]} > /dev/null;then
            ssh node${array[i]} "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
        else
            echo "kafka node${array[i]} 网络断开连接,启动失败"
        fi
    done
};;
"stop"){
    for (( i=0;i<${#array[@]};i++ ))
    do
        echo "---- 停止 node${array[i]} kafka ----"
        if ping -c 1 -w 1 node${array[i]} > /dev/null;then
            ssh node${array[i]} "/opt/module/kafka/bin/kafka-server-stop.sh"
        else
            echo "kafka node${array[i]} 网络断开连接,操作失败"
        fi
    done
};;
"status"){
    for (( i=0;i<${#array[@]};i++ ))
    do
        echo "---- kafka node${array[i]} 状态 ----"
        if ping -c 1 -w 1 node${array[i]} > /dev/null;then
            num=$( ssh node${array[i]} ps -ef | grep kafka | grep -vc grep )
                #判断kafka是否启动;返回0表示未启动;返回其他正整数表示已启动
            if [ $num -eq 0 ];then
                echo "kafka未启动"
            else
                echo "kafka已启动"
            fi
        else
            echo "kafka node${array[i]} 网络断开连接,无法获取状态信息"
        fi
    done
};;
esac

退出后添加可执行权限

root@test101 bin$ chmod 777 kf.sh

批量开启/停止kafka,查看kafka状态

root@test101 bin$  ./kf.sh start
root@test101 bin$  ./kf.sh stop
root@test101 bin$  ./kf.sh status
在kf.sh中添加写入日志功能
#!/bin/bash

echo -e "\n`date`\n执行脚本kf.sh" >> /root/shell/kafka-log.txt
#在日志/root/shell/kafka-log.txt中写入脚本执行时间

function doWork()
{
    array=(101 102 103)

    case $1 in
    "start"){
        for (( i=0;i<${#array[*]};i++))
        do
            echo "--- 启动 node${array[i]} kafka ---"
            if ping -c 1 -w 1 node${array[i]} > /dev/null ; then
                ssh node${array[i]} "/opt/modules/kafka/bin/kafka-server-start.sh -daemon /opt/modules/kafka/config/server.properties"
            else
                echo "kafka node${array[i]} 网络断开连接,启动失败"
            fi
        done
    };;
    "stop"){
        for (( i=0;i<${#array[*]};i++))
        do
            echo "--- 停止 node${array[i]} kafka ---"
            if ping -c 1 -w 1 node${array[i]} > /dev/null ; then
                ssh node${array[i]} "/opt/modules/kafka/bin/kafka-server-stop.sh"
            else
                echo "kafka node${array[i]} 网络断开连接,操作失败"
            fi
        done
    };;
    "status"){
        for (( i=0;i<${#array[*]};i++))
        do
            echo "--- 查看 node${array[i]} kafka状态 ---"
            if ping -c 1 -w 1 node${array[i]} > /dev/null ; then
                num=$( ssh node${array[i]} ps -ef | grep kafka | grep -vc grep ) 
                if [ $num -eq 0 ]; then 
                    echo "Kafka未启动"
                else
                    echo "Kafka已启动"
                fi
            else
                echo "kafka node${array[i]} 网络断开连接,无法获取状态信息"
            fi
            #unset name
        done
    };;
    esac
}

doWork $1 | tee -a /root/shell/kafka-log.txt #将执行脚本时打印的内容存入日志中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Shell脚本——kafka集群启停 的相关文章

  • 从 PHP 启动交互式 SSH bash 会话

    我正在使用 PHP 编写常见服务器管理任务的快捷方式 我正在使用deployer org 但这应该不重要 我想添加一个任务 用于在通过 SSH 连接到服务器后启动交互式 bash 提示符 例如 您将运行 dep ssh 其中 dep 是一个
  • 命令行/shell 帮助文本是否有“标准”格式?

    如果没有 是否有事实上的标准 基本上我正在编写命令行帮助文本 如下所示 usage app name options required input required input2 options a argument Does someth
  • 使用 ls 和 grep 列出具有特定扩展名的文件

    我只想从当前目录获取文件 并且只输出 mp4 mp3 exe 文件 没有其他内容 所以我想我可以这样做 ls grep mp4 grep mp3 grep exe 但不会 因为第一个 grep 将仅输出 mp4 因此其他 2 个 grep
  • Shell 脚本 - 迭代空格分隔的单词/字符(在 zsh 中)

    我在弄清楚如何在 shell 脚本中迭代空格分隔的单词 字符时遇到一些麻烦 例如 我想迭代一个包含字母表中由空格分隔的字符的变量 注意 即使字母表变量包含空格分隔的字符串而不是字符 结果也应该是相同的 即 aa bb cc 而不是 a b
  • 如何在 ruby​​ 中后台运行多个外部命令

    给定这个 Unix shell 脚本 test sh bin sh sleep 2 sleep 5 sleep 1 wait 时间 test sh real 0m5 008s user 0m0 040s sys 0m0 000s 如何在 U
  • Emacs 退出终端

    在 Emacs 中运行终端模式时使用M x term using C x C o我无法切换到另一个缓冲区来继续处理事情 我知道这是可能的M x shell但使用此命令时 shell 的某些方面不起作用 less more 手册页等 我想知道
  • 如何从 Emacs 中运行 Cygwin Bash Shell?

    我在 Windows 上运行 GNU Emacs 因此输入 M x shell 启动 Windows 命令行 DOS shell 但是 我希望能够从 Emacs 中运行 Cygwin Bash Shell 或任何其他非 Windows sh
  • 如何在 ubuntu 上的 emacs 中运行 shell 命令,同时避免 bash 作业控制错误?

    我在 ubuntu 中安装了 emacs 使用 sudo apt get install emacs 我遇到的问题是 当我尝试从 emacs 中运行 shell 命令时 例如M ls 输出之前是这样的 bash cannot set ter
  • “排序文件名 | uniq”不适用于大文件

    我可以从小文本文件中删除重复条目 但不能从大文本文件中删除重复条目 我有一个 4MB 的文件 文件的开头如下所示 aa aah aahed aahed aahing aahing aahs aahs aal aalii aalii aali
  • 从命令行获取设备的 Android SDK 版本

    我计划构建一个自动化系统 用于将 Android 版本部署到各种设备 以便使多平台开发更加轻松 有没有办法通过android shell或adb获取连接设备的sdk版本 将有一台计算机连接多个测试设备 我计划编写一个脚本 该脚本将从构建服务
  • 在 UNIX 时间戳 Shell/Bash 中将日期与时区转换

    我需要将日期从格式为 yyyy mm dd hh mm ss TZ 的字符串转换为 UNIX 时间 TZ 时区 到目前为止我所做的是将没有时区的 yyyy mm dd hh mm ss 格式的日期转换为时间戳 dateYMD 2019 2
  • 使用 Shell 脚本提供密码

    我已将客户端和服务器设置为无密码登录 就像无密码登录一样 通过将服务器的 RSA 密钥复制到所有客户端的 root ssh id rsa pub 来实现 但这是我手动完成的 我喜欢使用 shell 脚本自动执行此过程 并通过脚本向计算机提供
  • 使用 shell 脚本在 docker 容器内运行脚本

    我正在尝试创建一个 shell 脚本来设置 docker 容器 我的脚本文件如下所示 bin bash docker run t i p 5902 5902 name mycontainer privileged myImage new b
  • shell 脚本无法将命令行输出保存到变量中

    我正在尝试执行 shell 命令 然后使用 shell 脚本将输出保存到变量中 所以我使用这样的反引号 out ls l print out 该代码工作正常 我可以将它用于任何其他 shell 命令 但是当我尝试执行 python vers
  • 如何将文件中的值分配给 UNIX sh shell 中的变量?

    我一直在搜索这个网站 试图找到这个问题的答案 并发现了几个非常好的答案 不幸的是 它们都不适合我 这是我正在使用的脚本 VALUE cat szpfxct tmp export VALUE echo gt gt LGFILE echo te
  • 子 shell 何时继承其父 shell 环境?

    什么情况下将shell的环境传递给子shell 子 shell 始终从父 shell 获取所有变量 man bash将描述所有使用子shell的情况 主要是 command command command and command 所谓环境只
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 让 Emacs ansiterm 和 Zsh 更好地发挥作用

    我一直在尝试在 emacs 会话中使用 Zsh 而无需 emacs 重新映射所有 Zsh 键 我发现 ansi term 对此非常有效 但是我仍然遇到一些问题 我输出了很多垃圾字符 我可以用以下方法修复它 Setup proper term
  • ANSI 转义码在行尾有奇怪的行为

    重现步骤 考虑以下 shell 命令 echo e e 41mTest nTest2 e 0mTest3 它打印Test并在下一行中Test2具有红色背景 使用 ANSI 转义码 Test2后面直接是Test3这是无色的 行为 第一次执行此
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端

随机推荐

  • 腾讯地图 API 调用入门

    本文仅为腾讯地图 API 调用入门 xff0c 如需进阶学习 xff0c 请在腾讯位置服务网站上进行学习 登陆网址 https lbs qq com 点击右上角的登陆按钮 xff0c 需要进行注册按照流程进行就好 完成之后 xff0c 选择
  • QT安装过程中遇到的问题

    问题描述 xff1a 安装了qt安装包后sudo qt opensource linux x64 5 14 2 run显示找不到命令 解决办法 xff1a 把这个文件变成可执行文件 chmod 43 x qt opensource linu
  • 解决Idea升级安装过程中出现Missing essential plugin: com.intellij (platform prefix: null) 的问题

    在进行idea从2020 2升级到2022 1安装成功启动的时候会报这个错 xff1a Missing essential plugin com intellij platform prefix null Please reinstall
  • 吐血整理!SpringMVC常用简单注解(超详细)

    注解解析直达目录 1 用于接收前端给后端的json数据 64 RequestBody 1 1需求分析1 2具体情境1 3最佳实操1 4运行结果以及分析 2 获取restful风格url中的参数值 64 PathVariable 2 1需求分
  • Expression #1 of ORDER BY clause is not in SELECT list, references column ‘d.dept_no‘ which is not i

    问题 xff1a 34 Expression 1 of ORDER BY clause is not in SELECT list references column 39 d dept no 39 which is not in SELE
  • Ubuntu 安装和配置 git

    安装 sudo apt get update y sudo apt get upgrade y sudo apt install git 检查 git version 配置 git config global user name 34 用户
  • Centos检查进程是否关闭的shell脚本

    在运维工作当中会遇到程序打不开或者不工作的类似情况 xff0c 有部分原因是因为维持这个服务的某个进程关闭了 xff0c 这时候需要检查哪些进程是否挂掉了 xff0c 由于进程较多一个个来检查的话效率太慢 在这里给伙伴们安利一个简单实用的检
  • 基于SpringBoot和vue的移动端音乐网站的设计与实现

    1 xff0c 项目介绍 基于SpringBoot和vue的移动端音乐网站拥有两种角色 xff0c 分别为管理员和用户 用户 xff1a 歌单分类 xff1b 歌手分类 xff1b 仿网易云音乐播放 xff1b 音乐收藏 xff1b 音乐评
  • 前端-01Html5基本知识

    1 基本 1 1 第一个前端程序 内容 lt html gt lt head gt lt title gt 我的网页 lt title gt lt head gt lt body gt Hello 我的第一个网页 lt body gt lt
  • 使用maven来进行JavaSE增删改查

    首先得搞清楚maven是什么 xff1f Maven是一款服务于Java平台的自动化构建工具 Maven 作为 Java 项目管理工具 xff0c 可以用作包管理 xff0c 可以支持整个项目的开发 打包 测试及部署等一系列行为 maven
  • 银河麒麟桌面操作系统V10上安装的docker常规使用及注意事项

    前言 本文介绍银河麒麟桌面系统V10上docker的常规使用及注意事项 一 docker信息 银河麒麟桌面系统V10预装的docker xff0c 且开机自动启动了docker服务 查看服务状态 systemctl status docke
  • 背包九讲PDF

    本资料仅限个人学习交流使用 xff0c 不得用于商业用途 背包九讲PDF xff1a https pan baidu com s 17rTxMwCo9iSTOW77yucdXQ 提取码 xff1a xbqa 转载于 https www cn
  • electron在Windows、Linux和KYLIN操作系统下的不同表现

    一 electron简介 Electron 是一个由 Github 开发 用 HTML xff0c CSS 和 JavaScript 来构建跨平台桌面应用程序的框架 xff0c 然后这些应用程序可以打包在macOS Windows和Linu
  • vscode 终端美化

    1 进入网站 Base16 Terminal Colors for Visual Studio Code 2 选择自己喜欢的主题 点击Copy to clipboard 3 打开vscode 设置 输入setting 在 settings
  • kali美化与配置

    kali linux简单美化 前言 xff1a kali linux是一个神奇的系统 xff0c 里面含有大量的工具 xff08 虽然python很容易就可以做出来 xff09 xff0c 但是像msf这样的大作还是很有参考价值的 好不容易
  • ubuntu开机进入循环登录状态的解决方案

    ubuntu进入循环登陆的解决方案 1 出现问题的原因2 解决问题的方法2 1 登陆进入CLI2 2 检查 etc environment环境变量 1 出现问题的原因 我出现的这个问题的原因是由于修改系统的环境变量 etc profile
  • Tomcat 7.X安装教程(简单易懂)

    Tomcat 7 X安装教程 简单易懂 步骤1 下载Tomcat7 x版本 官网7 x下载地址 https tomcat apache org download 70 cgi https aoian lanzous com iCWyymcn
  • 社区医疗管理系统(JDBC+eclipse)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 项目预览1 登陆界面2 首页3 修改密码和查看个人信息4 用户管理5 居民信息 二 导入步骤1 下载文件2 数据库导入3
  • linux shell 常用命令

    linux shell 终端操作命令 shutdown 默认1分钟内关机 43 n表示n分钟后关机 输入后可以打shutdown c 进行取消 shutdown h now表示立即关机sudo 在命令前书写 xff0c 表示已管理员的权限运
  • Shell脚本——kafka集群启停

    部署kafka集群的服务器名称为 xff1a node101 node102 node103 批量启动 停止zookeeper xff0c 查看zookeeper开启状态 在 opt module zookeeper bin 目录中 xff