observability.svc.plus/roles/node/files/node.sh
2026-02-01 20:53:55 +08:00

194 lines
6.7 KiB
Bash

#!/bin/bash
#==============================================================#
# Environment
export EDITOR="vi"
export PAGER="less"
#--------------------------------------------------------------#
# if bash is used, set shopt and prompt
if [ -n "$BASH_VERSION" ]; then
shopt -s nocaseglob # case-insensitive globbing
shopt -s cdspell # auto-correct typos in cd
set -o pipefail # pipe fail when component fail
shopt -s histappend # append to history rather than overwrite
for option in autocd globstar; do
shopt -s "$option" 2>/dev/null
done
export PS1="\[\033]0;\w\007\]\[\]\n\[\e[1;36m\][\D{%m-%d %T}] \[\e[1;31m\]\u\[\e[1;33m\]@\H\[\e[1;32m\]:\w \n\[\e[1;35m\]\$ \[\e[0m\]"
fi
#--------------------------------------------------------------#
# Bash settings
export MANPAGER="less -X"
export HISTSIZE=65535
export HISTFILESIZE=$HISTSIZE
export HISTCONTROL=ignoredups
export HISTIGNORE="l:ls:cd:cd -:pwd:exit:date:* --help"
#--------------------------------------------------------------#
# Path dedupe
if [ -n "$PATH" ]; then
old_PATH=$PATH:
PATH=
while [ -n "$old_PATH" ]; do
x=${old_PATH%%:*}
case $PATH: in
*:"$x":*) ;;
*) PATH=$PATH:$x ;;
esac
old_PATH=${old_PATH#*:}
done
PATH=${PATH#:}
unset old_PATH x
fi
#--------------------------------------------------------------#
# aliases & functions
alias c="clear"
alias p="pig"
alias pp="psql"
alias q="exit"
alias j="jobs"
alias k="kubectl"
alias h="history"
alias m="mcli"
alias mc="mcli"
alias d="docker"
alias dc="docker compose"
alias x="claude"
alias xx="IS_SANDBOX=1 claude --dangerously-skip-permissions"
alias oc="opencode"
alias gc='git checkout'
alias gst="git status"
alias gci="git commit"
alias gpm='git push origin main'
function v() {
[ $# -eq 0 ] && vi . || vi $@
}
alias hg="history | grep --color=auto "
alias py="python3"
alias cl="clear"
alias clc="clear"
alias rf="rm -rf"
alias ax="chmod a+x"
alias sd="sudo su - dba"
alias sa="sudo su - root"
alias sp="sudo su - postgres"
alias adm="sudo su - admin"
alias vl="sudo cat /var/log/messages"
alias ntps="sudo chronyc -a makestep"
alias node-mt="curl -sL localhost:9100/metrics | grep -v '#' | grep node_"
alias vec-mt="curl -sL localhost:9598/metrics | grep -v '#' | grep vector_"
#--------------------------------------------------------------#
# ls corlor
[ ls --color ] >/dev/null 2>&1 && colorflag="--color" || colorflag="-G"
[ "${TERM}" != "dumb" ] && export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:\ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
alias sl=ls
alias ll="ls -lh ${colorflag}"
alias l="ls -lh ${colorflag}"
alias la="ls -lha ${colorflag}"
alias lsa="ls -a ${colorflag}"
alias ls="command ls ${colorflag}"
alias lsd="ls -lh ${colorflag} | grep --color=never '^d'" # List only directories
alias ~="cd ~"
alias ..="cd .."
alias cd..="cd .."
alias ...="cd ../.."
alias cd...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias grep="grep --color=auto"
alias fgrep="fgrep --color=auto"
alias egrep="egrep --color=auto"
alias now='date +"DATE: %Y-%m-%d TIME: %H:%M:%S EPOCH: %s"'
alias today='date +"%Y%m%d "'
alias suod='sudo '
alias map="xargs -n1"
alias yaml2json='python -c "import yaml,json,sys; json.dump(yaml.safe_load(sys.stdin.read()), sys.stdout, indent=4)"'
alias json2yaml='python -c "import yaml,json,sys; yaml.safe_dump(json.load(sys.stdin), sys.stdout, indent=4)"'
alias urlenc='python -c "import sys, urllib as ul; print(ul.quote(sys.argv[1]));"'
alias urldec='python -c "import sys, urllib as ul; print(ul.unquote(sys.argv[1]));"'
alias b64enc='python -c "import sys,base64 as b;print(b.b64encode(sys.argv[1]));"'
alias b64dec='python -c "import sys,base64 as b;print(b.b64decode(sys.argv[1]));"'
#--------------------------------------------------------------#
# utils
function tz() {
if [ -t 0 ]; then # argument
tar -zcf "$1.tar.gz" "$@"
else # pipe
gzip
fi
}
function tx() {
if [ -t 0 ]; then # argument
tar -xf $@
else # pipe
tar -x -
fi
}
# log & color util
__CN='\033[0m' # no color
__CB='\033[0;30m' # black
__CR='\033[0;31m' # red
__CG='\033[0;32m' # green
__CY='\033[0;33m' # yellow
__CB='\033[0;34m' # blue
__CM='\033[0;35m' # magenta
__CC='\033[0;36m' # cyan
__CW='\033[0;37m' # white
function log_info() { printf "[${__CG} OK ${__CN}] ${__CG}$*${__CN}\n"; }
function log_warn() { printf "[${__CY}WARN${__CN}] ${__CY}$*${__CN}\n"; }
function log_error() { printf "[${__CR}FAIL${__CN}] ${__CR}$*${__CN}\n"; }
function log_debug() { printf "[${__CB}HINT${__CN}] ${__CB}$*${__CN}\n"; }
function log_input() { printf "[${__CM} IN ${__CN}] ${__CM}$*\n=> ${__CN}"; }
function log_hint() { printf "${__CB}$*${__CN}"; }
#--------------------------------------------------------------#
# systemctl
alias s="systemctl"
alias st="sudo systemctl status "
alias sr="sudo systemctl restart "
alias ssdr="sudo systemctl daemon-reload"
if [ -f /usr/share/bash-completion/completions/systemctl ] && ! type -f _alias_sr_completion &>/dev/null ; then
source /usr/share/bash-completion/completions/systemctl
complete -F _systemctl s
complete -F _alias_sr_completion sr
complete -F _alias_st_completion st
_alias_sr_completion() {
local cur compopt
_get_comp_words_by_ref -n : cur
comps=$( __get_restartable_units --system "$cur" )
compopt -o filenames
COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
return 0
}
_alias_st_completion() {
local cur compopt
_get_comp_words_by_ref -n : cur
comps=$( __get_non_template_units --system "$cur" )
compopt -o filenames
COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
return 0
}
fi
#--------------------------------------------------------------#
# journalctl
alias je="journalctl -xe"
alias ju="journalctl -u"
if [ -f /usr/share/bash-completion/completions/journalctl ] && ! type _alias_ju_completion &>/dev/null ; then
source /usr/share/bash-completion/completions/journalctl
_alias_ju_completion() {
local cur
_get_comp_words_by_ref -n : cur
comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null)
if ! [[ $cur =~ '\\' ]]; then
cur="$(printf '%q' $cur)"
fi
compopt -o filenames
COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
return 0
}
complete -F _alias_ju_completion ju
fi
#==============================================================#
# vim:ts=2:sw=2