mirror of https://github.com/easzlab/kubeasz.git
style: trim trailing whitespace & add logger source line number
parent
b2b66f922e
commit
8d17c08eda
72
ezctl
72
ezctl
|
@ -1,5 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Create & manage k8s clusters
|
# Create & manage k8s clusters
|
||||||
|
# shellcheck disable=SC2155
|
||||||
|
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
@ -39,23 +40,24 @@ EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
function logger() {
|
function logger() {
|
||||||
TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')
|
TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')
|
||||||
case "$1" in
|
local FNAME=$(basename "${BASH_SOURCE[1]}")
|
||||||
debug)
|
local SOURCE="\033[36m[$FNAME:${BASH_LINENO[0]}]\033[0m"
|
||||||
echo -e "$TIMESTAMP \033[36mDEBUG\033[0m $2"
|
case "$1" in
|
||||||
;;
|
debug)
|
||||||
info)
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[36mDEBUG $2\033[0m"
|
||||||
echo -e "$TIMESTAMP \033[32mINFO\033[0m $2"
|
;;
|
||||||
;;
|
info)
|
||||||
warn)
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[32mINFO $2\033[0m"
|
||||||
echo -e "$TIMESTAMP \033[33mWARN\033[0m $2"
|
;;
|
||||||
;;
|
warn)
|
||||||
error)
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[33mWARN $2\033[0m"
|
||||||
echo -e "$TIMESTAMP \033[31mERROR\033[0m $2"
|
;;
|
||||||
;;
|
error)
|
||||||
*)
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[31mERROR $2\033[0m"
|
||||||
;;
|
;;
|
||||||
esac
|
*) ;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
function help-info() {
|
function help-info() {
|
||||||
|
@ -99,7 +101,7 @@ function usage-kcfg-adm(){
|
||||||
echo -e "\033[33mUsage:\033[0m ezctl kcfg-adm <cluster> <args>"
|
echo -e "\033[33mUsage:\033[0m ezctl kcfg-adm <cluster> <args>"
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
available <args>:
|
available <args>:
|
||||||
-A to add a client kubeconfig with a newly created user
|
-A to add a client kubeconfig with a newly created user
|
||||||
-D to delete a client kubeconfig with the existed user
|
-D to delete a client kubeconfig with the existed user
|
||||||
-L to list all of the users
|
-L to list all of the users
|
||||||
-e to set expiry of the user certs in hours (ex. 24h, 8h, 240h)
|
-e to set expiry of the user certs in hours (ex. 24h, 8h, 240h)
|
||||||
|
@ -116,7 +118,7 @@ function usage-setup(){
|
||||||
echo -e "\033[33mUsage:\033[0m ezctl setup <cluster> <step>"
|
echo -e "\033[33mUsage:\033[0m ezctl setup <cluster> <step>"
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
available steps:
|
available steps:
|
||||||
01 prepare to prepare CA/certs & kubeconfig & other system settings
|
01 prepare to prepare CA/certs & kubeconfig & other system settings
|
||||||
02 etcd to setup the etcd cluster
|
02 etcd to setup the etcd cluster
|
||||||
03 container-runtime to setup the container runtime(docker or containerd)
|
03 container-runtime to setup the container runtime(docker or containerd)
|
||||||
04 kube-master to setup the master nodes
|
04 kube-master to setup the master nodes
|
||||||
|
@ -169,7 +171,7 @@ function new() {
|
||||||
grep registry-mirrors /etc/docker/daemon.json > /dev/null 2>&1 || { logger debug "disable registry mirrors"; registryMirror=false; }
|
grep registry-mirrors /etc/docker/daemon.json > /dev/null 2>&1 || { logger debug "disable registry mirrors"; registryMirror=false; }
|
||||||
|
|
||||||
sed -i -e "s/__k8s_ver__/$k8sVer/g" \
|
sed -i -e "s/__k8s_ver__/$k8sVer/g" \
|
||||||
-e "s/__flannel__/$flannelVer/g" \
|
-e "s/__flannel__/$flannelVer/g" \
|
||||||
-e "s/__calico__/$calicoVer/g" \
|
-e "s/__calico__/$calicoVer/g" \
|
||||||
-e "s/__cilium__/$ciliumVer/g" \
|
-e "s/__cilium__/$ciliumVer/g" \
|
||||||
-e "s/__kube_ovn__/$kubeOvnVer/g" \
|
-e "s/__kube_ovn__/$kubeOvnVer/g" \
|
||||||
|
@ -234,7 +236,7 @@ function setup() {
|
||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
usage-setup
|
usage-setup
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@ -364,7 +366,7 @@ function add-master() {
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/23.addmaster.yml" -e "NODE_TO_ADD=$2" -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/23.addmaster.yml" -e "NODE_TO_ADD=$2" -e "@clusters/$1/config.yml"
|
||||||
|
|
||||||
logger info "reconfigure and restart 'kube-lb' service"
|
logger info "reconfigure and restart 'kube-lb' service"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/90.setup.yml" -t restart_kube-lb -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/90.setup.yml" -t restart_kube-lb -e "@clusters/$1/config.yml"
|
||||||
|
|
||||||
logger info "reconfigure and restart 'ex-lb' service"
|
logger info "reconfigure and restart 'ex-lb' service"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/10.ex-lb.yml" -t restart_lb -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/10.ex-lb.yml" -t restart_lb -e "@clusters/$1/config.yml"
|
||||||
|
@ -386,9 +388,9 @@ function add-etcd() {
|
||||||
|
|
||||||
logger info "reconfig &restart the etcd cluster"
|
logger info "reconfig &restart the etcd cluster"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/02.etcd.yml" -t restart_etcd -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/02.etcd.yml" -t restart_etcd -e "@clusters/$1/config.yml"
|
||||||
|
|
||||||
logger info "restart apiservers to use the new etcd cluster"
|
logger info "restart apiservers to use the new etcd cluster"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/04.kube-master.yml" -t restart_master -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/04.kube-master.yml" -t restart_master -e "@clusters/$1/config.yml"
|
||||||
}
|
}
|
||||||
|
|
||||||
function del-etcd() {
|
function del-etcd() {
|
||||||
|
@ -403,9 +405,9 @@ function del-etcd() {
|
||||||
|
|
||||||
logger info "reconfig &restart the etcd cluster"
|
logger info "reconfig &restart the etcd cluster"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/02.etcd.yml" -t restart_etcd -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/02.etcd.yml" -t restart_etcd -e "@clusters/$1/config.yml"
|
||||||
|
|
||||||
logger info "restart apiservers to use the new etcd cluster"
|
logger info "restart apiservers to use the new etcd cluster"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/04.kube-master.yml" -t restart_master -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/04.kube-master.yml" -t restart_master -e "@clusters/$1/config.yml"
|
||||||
}
|
}
|
||||||
|
|
||||||
function del-node() {
|
function del-node() {
|
||||||
|
@ -427,13 +429,13 @@ function del-master() {
|
||||||
sed -n '/^\[kube_master/,/^\[kube_node/p' "$BASE/clusters/$1/hosts"|grep -E "^$2$|^$2 " || { logger error "master $2 not existed!"; return 2; }
|
sed -n '/^\[kube_master/,/^\[kube_node/p' "$BASE/clusters/$1/hosts"|grep -E "^$2$|^$2 " || { logger error "master $2 not existed!"; return 2; }
|
||||||
|
|
||||||
logger warn "start to delete the master:$2 from cluster:$1"
|
logger warn "start to delete the master:$2 from cluster:$1"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/33.delmaster.yml" -e "NODE_TO_DEL=$2" -e "CLUSTER=$1" -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/33.delmaster.yml" -e "NODE_TO_DEL=$2" -e "CLUSTER=$1" -e "@clusters/$1/config.yml"
|
||||||
|
|
||||||
logger info "reconfig kubeconfig in ansible manage node"
|
logger info "reconfig kubeconfig in ansible manage node"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/roles/deploy/deploy.yml" -t create_kctl_cfg -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/roles/deploy/deploy.yml" -t create_kctl_cfg -e "@clusters/$1/config.yml"
|
||||||
|
|
||||||
logger info "reconfigure and restart 'kube-lb' service"
|
logger info "reconfigure and restart 'kube-lb' service"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/90.setup.yml" -t restart_kube-lb -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/90.setup.yml" -t restart_kube-lb -e "@clusters/$1/config.yml"
|
||||||
|
|
||||||
logger info "reconfigure and restart 'ex-lb' service"
|
logger info "reconfigure and restart 'ex-lb' service"
|
||||||
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/10.ex-lb.yml" -t restart_lb -e "@clusters/$1/config.yml"
|
ansible-playbook -i "$BASE/clusters/$1/hosts" "$BASE/playbooks/10.ex-lb.yml" -t restart_lb -e "@clusters/$1/config.yml"
|
||||||
|
@ -484,7 +486,7 @@ function renew-ca() {
|
||||||
|
|
||||||
|
|
||||||
EXPIRY="4800h" # default cert will expire in 200 days
|
EXPIRY="4800h" # default cert will expire in 200 days
|
||||||
USER_TYPE="admin" # admin/view, admin=clusterrole:cluster-admin view=clusterrole:view
|
USER_TYPE="admin" # admin/view, admin=clusterrole:cluster-admin view=clusterrole:view
|
||||||
USER_NAME="user"
|
USER_NAME="user"
|
||||||
function kcfg-adm() {
|
function kcfg-adm() {
|
||||||
OPTIND=2
|
OPTIND=2
|
||||||
|
@ -522,7 +524,7 @@ function kcfg-adm() {
|
||||||
|
|
||||||
logger info "$ACTION"
|
logger info "$ACTION"
|
||||||
${ACTION} || { logger error "$ACTION fail"; return 1; }
|
${ACTION} || { logger error "$ACTION fail"; return 1; }
|
||||||
logger info "$ACTION success"
|
logger info "$ACTION success"
|
||||||
}
|
}
|
||||||
|
|
||||||
function add-kcfg(){
|
function add-kcfg(){
|
||||||
|
@ -545,10 +547,10 @@ function list-kcfg(){
|
||||||
ADMINS=$(bin/kubectl --kubeconfig="clusters/$1/kubectl.kubeconfig" get clusterrolebindings -ojsonpath='{.items[?(@.roleRef.name == "cluster-admin")].subjects[*].name}')
|
ADMINS=$(bin/kubectl --kubeconfig="clusters/$1/kubectl.kubeconfig" get clusterrolebindings -ojsonpath='{.items[?(@.roleRef.name == "cluster-admin")].subjects[*].name}')
|
||||||
VIEWS=$(bin/kubectl --kubeconfig="clusters/$1/kubectl.kubeconfig" get clusterrolebindings -ojsonpath='{.items[?(@.roleRef.name == "view")].subjects[*].name}')
|
VIEWS=$(bin/kubectl --kubeconfig="clusters/$1/kubectl.kubeconfig" get clusterrolebindings -ojsonpath='{.items[?(@.roleRef.name == "view")].subjects[*].name}')
|
||||||
ALL=$(bin/kubectl --kubeconfig="clusters/$1/kubectl.kubeconfig" get clusterrolebindings -ojsonpath='{.items[*].subjects[*].name}')
|
ALL=$(bin/kubectl --kubeconfig="clusters/$1/kubectl.kubeconfig" get clusterrolebindings -ojsonpath='{.items[*].subjects[*].name}')
|
||||||
|
|
||||||
printf "\n%-30s %-15s %-20s\n" USER TYPE "EXPIRY(+8h if in Asia/Shanghai)"
|
printf "\n%-30s %-15s %-20s\n" USER TYPE "EXPIRY(+8h if in Asia/Shanghai)"
|
||||||
echo "---------------------------------------------------------------------------------"
|
echo "---------------------------------------------------------------------------------"
|
||||||
|
|
||||||
for u in $ADMINS; do
|
for u in $ADMINS; do
|
||||||
if [[ $u =~ ^.*-[0-9]{12}$ ]];then
|
if [[ $u =~ ^.*-[0-9]{12}$ ]];then
|
||||||
t=$(bin/cfssl-certinfo -cert "clusters/$1/ssl/users/$u.pem"|grep not_after|awk '{print $2}'|sed 's/"//g'|sed 's/,//g')
|
t=$(bin/cfssl-certinfo -cert "clusters/$1/ssl/users/$u.pem"|grep not_after|awk '{print $2}'|sed 's/"//g'|sed 's/,//g')
|
||||||
|
@ -586,9 +588,9 @@ function main() {
|
||||||
|
|
||||||
# check 'ansible' executable
|
# check 'ansible' executable
|
||||||
which ansible > /dev/null 2>&1 || { logger error "need 'ansible', try: 'pip install ansible'"; usage; exit 1; }
|
which ansible > /dev/null 2>&1 || { logger error "need 'ansible', try: 'pip install ansible'"; usage; exit 1; }
|
||||||
|
|
||||||
[ "$#" -gt 0 ] || { usage >&2; exit 2; }
|
[ "$#" -gt 0 ] || { usage >&2; exit 2; }
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
### in-cluster operations #####################
|
### in-cluster operations #####################
|
||||||
(add-etcd)
|
(add-etcd)
|
||||||
|
@ -681,4 +683,4 @@ function main() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
42
ezdown
42
ezdown
|
@ -1,12 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# This script is used for:
|
# This script is used for:
|
||||||
# 1. to download the scripts/binaries/images needed for installing a k8s cluster with kubeasz
|
# 1. to download the scripts/binaries/images needed for installing a k8s cluster with kubeasz
|
||||||
# 2. to run kubeasz in a container (recommended)
|
# 2. to run kubeasz in a container (recommended)
|
||||||
# @author: gjmzj
|
# @author: gjmzj
|
||||||
# @usage: ./ezdown
|
# @usage: ./ezdown
|
||||||
# @repo: https://github.com/easzlab/kubeasz
|
# @repo: https://github.com/easzlab/kubeasz
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
|
# shellcheck disable=SC2155
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o errexit
|
set -o errexit
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
@ -111,7 +112,7 @@ available options:
|
||||||
local-path-provisioner to download images of local-path-provisioner
|
local-path-provisioner to download images of local-path-provisioner
|
||||||
network-check to download images of network-check
|
network-check to download images of network-check
|
||||||
nfs-provisioner to download images of nfs-provisioner
|
nfs-provisioner to download images of nfs-provisioner
|
||||||
prometheus to download images of prometheus
|
prometheus to download images of prometheus
|
||||||
examples:
|
examples:
|
||||||
./ezdown -X prometheus
|
./ezdown -X prometheus
|
||||||
EOF
|
EOF
|
||||||
|
@ -119,21 +120,22 @@ EOF
|
||||||
|
|
||||||
function logger() {
|
function logger() {
|
||||||
TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')
|
TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')
|
||||||
|
local FNAME=$(basename "${BASH_SOURCE[1]}")
|
||||||
|
local SOURCE="\033[36m[$FNAME:${BASH_LINENO[0]}]\033[0m"
|
||||||
case "$1" in
|
case "$1" in
|
||||||
debug)
|
debug)
|
||||||
echo -e "$TIMESTAMP \033[36mDEBUG\033[0m $2"
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[36mDEBUG $2\033[0m"
|
||||||
;;
|
;;
|
||||||
info)
|
info)
|
||||||
echo -e "$TIMESTAMP \033[32mINFO\033[0m $2"
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[32mINFO $2\033[0m"
|
||||||
;;
|
;;
|
||||||
warn)
|
warn)
|
||||||
echo -e "$TIMESTAMP \033[33mWARN\033[0m $2"
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[33mWARN $2\033[0m"
|
||||||
;;
|
;;
|
||||||
error)
|
error)
|
||||||
echo -e "$TIMESTAMP \033[31mERROR\033[0m $2"
|
echo -e "\033[36m$TIMESTAMP\033[0m $SOURCE \033[31mERROR $2\033[0m"
|
||||||
;;
|
|
||||||
*)
|
|
||||||
;;
|
;;
|
||||||
|
*) ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,13 +162,13 @@ function download_docker() {
|
||||||
mkdir -p "$BASE/bin/docker-bin" && \
|
mkdir -p "$BASE/bin/docker-bin" && \
|
||||||
cp -f "$BASE"/down/docker/* "$BASE/bin/docker-bin" && \
|
cp -f "$BASE"/down/docker/* "$BASE/bin/docker-bin" && \
|
||||||
mv -f "$BASE"/down/docker/* /opt/kube/bin && \
|
mv -f "$BASE"/down/docker/* /opt/kube/bin && \
|
||||||
ln -sf /opt/kube/bin/docker /bin/docker
|
ln -sf /opt/kube/bin/docker /bin/docker
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_docker() {
|
function install_docker() {
|
||||||
# check if a container runtime is already installed
|
# check if a container runtime is already installed
|
||||||
systemctl status docker|grep Active|grep -q running && { logger warn "docker is already running."; return 0; }
|
systemctl status docker|grep Active|grep -q running && { logger warn "docker is already running."; return 0; }
|
||||||
|
|
||||||
logger debug "generate docker service file"
|
logger debug "generate docker service file"
|
||||||
cat > /etc/systemd/system/docker.service << EOF
|
cat > /etc/systemd/system/docker.service << EOF
|
||||||
[Unit]
|
[Unit]
|
||||||
|
@ -276,7 +278,7 @@ function get_kubeasz() {
|
||||||
|
|
||||||
function get_k8s_bin() {
|
function get_k8s_bin() {
|
||||||
[[ -f "$BASE/bin/kubelet" ]] && { logger warn "kubernetes binaries existed"; return 0; }
|
[[ -f "$BASE/bin/kubelet" ]] && { logger warn "kubernetes binaries existed"; return 0; }
|
||||||
|
|
||||||
logger info "downloading kubernetes: $K8S_BIN_VER binaries"
|
logger info "downloading kubernetes: $K8S_BIN_VER binaries"
|
||||||
rm -rf "$BASE/k8s_bin_tmp"
|
rm -rf "$BASE/k8s_bin_tmp"
|
||||||
docker ps -a |grep -q temp_k8s_bin && { logger debug "remove existing container"; docker rm -f temp_k8s_bin; }
|
docker ps -a |grep -q temp_k8s_bin && { logger debug "remove existing container"; docker rm -f temp_k8s_bin; }
|
||||||
|
@ -368,7 +370,7 @@ function get_default_images() {
|
||||||
# dns-node-cache
|
# dns-node-cache
|
||||||
if [[ ! -f "$imageDir/k8s-dns-node-cache_$dnsNodeCacheVer.tar" ]];then
|
if [[ ! -f "$imageDir/k8s-dns-node-cache_$dnsNodeCacheVer.tar" ]];then
|
||||||
docker pull "easzlab/k8s-dns-node-cache:$dnsNodeCacheVer" && \
|
docker pull "easzlab/k8s-dns-node-cache:$dnsNodeCacheVer" && \
|
||||||
docker save -o "$imageDir/k8s-dns-node-cache_$dnsNodeCacheVer.tar" "easzlab/k8s-dns-node-cache:$dnsNodeCacheVer"
|
docker save -o "$imageDir/k8s-dns-node-cache_$dnsNodeCacheVer.tar" "easzlab/k8s-dns-node-cache:$dnsNodeCacheVer"
|
||||||
else
|
else
|
||||||
docker load -i "$imageDir/k8s-dns-node-cache_$dnsNodeCacheVer.tar"
|
docker load -i "$imageDir/k8s-dns-node-cache_$dnsNodeCacheVer.tar"
|
||||||
fi
|
fi
|
||||||
|
@ -693,8 +695,8 @@ function start_kubeasz_docker() {
|
||||||
|
|
||||||
function clean_container() {
|
function clean_container() {
|
||||||
logger info "clean all running containers"
|
logger info "clean all running containers"
|
||||||
docker ps -a|awk 'NR>1{print $1}'|xargs docker rm -f
|
docker ps -a|awk 'NR>1{print $1}'|xargs docker rm -f
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
### Main Lines ##################################################
|
### Main Lines ##################################################
|
||||||
|
@ -703,15 +705,15 @@ function main() {
|
||||||
imageDir="$BASE/down"
|
imageDir="$BASE/down"
|
||||||
|
|
||||||
# check if use bash shell
|
# check if use bash shell
|
||||||
readlink /proc/$$/exe|grep -q "bash" || { logger error "you should use bash shell, not sh"; exit 1; }
|
# readlink /proc/$$/exe|grep -q "bash" || { logger error "you should use bash shell, not sh"; exit 1; }
|
||||||
# check if use with root
|
# check if use with root
|
||||||
[[ "$EUID" -ne 0 ]] && { logger error "you should run this script as root"; exit 1; }
|
# [[ "$EUID" -ne 0 ]] && { logger error "you should run this script as root"; exit 1; }
|
||||||
|
|
||||||
# get architecture
|
# get architecture
|
||||||
ARCH=$(uname -m)
|
ARCH=$(uname -m)
|
||||||
|
|
||||||
[[ "$#" -eq 0 ]] && { usage >&2; exit 1; }
|
[[ "$#" -eq 0 ]] && { usage >&2; exit 1; }
|
||||||
|
|
||||||
ACTION=""
|
ACTION=""
|
||||||
while getopts "CDP:RSX:d:e:k:m:z:" OPTION; do
|
while getopts "CDP:RSX:d:e:k:m:z:" OPTION; do
|
||||||
case "$OPTION" in
|
case "$OPTION" in
|
||||||
|
@ -757,10 +759,10 @@ function main() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
[[ "$ACTION" == "" ]] && { logger error "illegal option"; usage; exit 1; }
|
[[ "$ACTION" == "" ]] && { logger error "illegal option"; usage; exit 1; }
|
||||||
|
|
||||||
# excute cmd "$ACTION"
|
# excute cmd "$ACTION"
|
||||||
logger info "Action begin: $ACTION"
|
logger info "Action begin: $ACTION"
|
||||||
${ACTION} || { logger error "Action failed: $ACTION"; return 1; }
|
${ACTION} || { logger error "Action failed: $ACTION"; return 1; }
|
||||||
logger info "Action successed: $ACTION"
|
logger info "Action successed: $ACTION"
|
||||||
|
|
Loading…
Reference in New Issue