使用 jq 在 bash 脚本中,遍历 json 数组
假设有这样的 json 数组,存储于变量 hosts
中
1 2 3 4
| [ {"host": "10.0.0.1", "user": "user1"}, {"host": "10.0.0.2", "user": "user1"} ]
|
使用下列代码遍历该数组
1 2 3 4 5 6
| for row in $(echo "${hosts}" | jq -r '.[] | @base64'); do _jq() { echo ${row} | base64 --decode | jq -r ${1} } echo $(_jq '.host') $(_jq '.user') done
|
在循环体中,可通过 _jq '.host'
等操作,访问 json 值
使用 read 读取用户密码输入(关闭回显)
1 2
| echo -n "Password: " read -s password
|
k8s 切换命名空间
代码
1 2 3 4
| function k8s-switch-ns { ns="$1" kubectl config set-context --current --namespace=${ns} }
|
使用
1
| $ k8s-switch-ns kube-system
|
k8s 展示所有 pullBackOff 的 image
遍历所有的 POD,列出所有出现 Back-off pulling image
的 image
代码
1 2 3 4 5 6 7 8 9 10
| function k8s-list-all-pull-error-images { lists=($(kubectl get pods --all-namespaces --field-selector=status.phase!=Running | grep ImagePullBackOff | awk '{printf "%s,%s\n", $1,$2}'))
for item in ${lists}; do ns=$(echo $item | awk -F, '{print $1}') pod=$(echo $item | awk -F, '{print $2}') image=$(kubectl describe pod $pod -n $ns | grep "Back-off pulling image" | awk '{print $NF}') echo $image done }
|
使用
1
| $ k8s-list-all-pull-error-images
|
自签 https 证书
参考
代码
1 2 3 4 5 6 7 8 9 10 11
| openssl genrsa -des3 -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt
openssl req -x509 -new -nodes -keyout ca.key -sha256 -days 1024 -out ca.crt
openssl genrsa -out mydomain.com.key 2048
|
清除 git 历史上的二进制、敏感文件
参考
代码
替换下面代码中的 <file>
为需要删除的文件路径
1 2 3 4 5 6
| git filter-branch --prune-empty -d /dev/shm/scratch \ --index-filter "git rm --cached -f --ignore-unmatch <file>" \ --tag-name-filter cat -- --all
git gc --prune=now --aggressive
|
设置 oh-my-zsh
自动更新频率
参考
代码
在 ~/.zshrc
中,在 source $ZSH/oh-my-zsh.sh
之前添加
1 2 3 4 5 6 7 8
|
zstyle ':omz:update' frequency 60
|
Author:
Brody715
Permalink:
https://blog.brody715.com/2022/05/11/Bash-Scripts/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE