shell-对于变量的使用的一些脚本实现方式
for 循环简单实现
1 2 3 4 5 6 7 | #!/bin/bash cd /root/health-check/ > /tmp/bomp-check-result .json for i in $( ls . /check *.sh) do bash ./$i done |
通过端口判断kubelet是否存活
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/bin/bash nodeip=$(kubectl get nodes -o wide | awk 'NR>1 {print $6}' ) kubelet_start=0 kubelet_end=0 failed_ip= "" for i in ${nodeip[@]} do let kubelet_end++ line=$( echo "" |telnet ${i} 10250 2> /dev/null | wc -l) if [ $line - eq 3 ] ; then let kubelet_start++ else failed_ip= "$failed_ip $i" fi done if [ ${kubelet_start} - eq ${kubelet_end} ]; then status= true else status= false fi |
通过状态检测服务是否存活
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #!/bin/bash #etcdIP=$(cat test.txt |grep "ETCD_INITIAL_CLUSTER=" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') master=$(kubectl get nodes -o wide| grep master | awk 'NR>1{print $6}' ) old=0 new=1 apiserver_failed= "" scheduler_failed= "" controller_failed= "" proxy_failed= "" for i in ${master[@]} do sta=$(kubectl get pods -o wide -n kube-system | grep kube-apiserver | grep $i | awk '{print $3}' ) if [ $sta == "Running" ]; then apiserver_status= true else apiserver_status= false apiserver_failed= "$apiserver_failed $i" fi sta_sch=$(kubectl get pods -o wide -n kube-system | grep scheduler | grep $i | awk '{print $3}' ) if [ $sta_sch == "Running" ]; then scheduler_status= true else scheduler_status= false scheduler_failed= "$scheduler_failed $i" fi sta_contro=$(kubectl get pods -o wide -n kube-system | grep controller-manager | grep $i | awk '{print $3}' ) if [ $sta_contro == "Running" ]; then controller_status= true else controller_status= false controller_failed= "$controller_failed $i" fi done sta_proxy=$(kubectl get pods -o wide -n kube-system | grep kube-proxy | awk '{print $3}' ) proxy_old=0 proxy_new=0 for i in ${sta_proxy[@]} do let proxy_old++ if [ $i == "Running" ]; then let proxy_new++ else proxy_failed= "$proxy_failed $i" fi done if [ $proxy_old - eq $proxy_new ]; then proxy_status= true else proxy_status= false fi coredns_status=$(kubectl get pods -o wide -n kube-system | grep coredns | awk '{print $3}' ) coredns_old=0 coredns_new=0 for i in ${coredns_status[@]} do let coredns_old++ if [ $i == "Running" ]; then let coredns_new++ fi done if [ $coredns_old - eq $coredns_new ]; then coredns_status= true else coredns_status= false fi |
shell脚本多个选项的实现方式 (指定开关)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #!/bin/sh set -o pipefail red(){ echo -e "\033[31m \t$1 \033[0m" } green(){ echo -e "\033[32m \t$1 \033[0m" } yellow(){ echo -e "\033[33m \t$1 \033[0m" } blue(){ echo -e "\033[34m $1 \033[0m" } usage() { cat << EOF Rolling upgrade kernel Usage : $( basename $0) - v <version> -f < yes > -h | --help : Show this message - v | --version : Specify kernel version -y | -- yes : Upgrade confirmation switch Example : $( basename $0) - v 406 -y yes EOF } while (($ #)); do case "$1" in -h | --help) usage; exit 0 ;; - v | --verison) value=${2}; shift 2 ;; -y | -- yes ) switch=${2}; shift 2 ;; *) usage echo "ERROR : Unknown option" exit 3 ;; esac done if [[ ${switch} != "yes" ]]; then red "Please turn on the switch,View help through -h or --help" exit 5 fi |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具