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 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

  

 

posted @   崛起的麋鹿  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示