diff options
| author | Michael Biebl <biebl@debian.org> | 2024-05-05 00:07:30 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2024-05-05 00:07:30 +0200 |
| commit | 34bb501be08aa2b313d88e67d6e0a7e0a3f9cfa6 (patch) | |
| tree | 4e6220877828be4c6f261de09ec0cb2d80e32389 /contrib/scripts/NM-log | |
| parent | bba2e4b4de668db525cbfdfc35292e5a0b51671a (diff) | |
New upstream version 1.47.90 upstream/1.47.90
Diffstat (limited to 'contrib/scripts/NM-log')
| -rwxr-xr-x | contrib/scripts/NM-log | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/contrib/scripts/NM-log b/contrib/scripts/NM-log new file mode 100755 index 00000000..85faea86 --- /dev/null +++ b/contrib/scripts/NM-log @@ -0,0 +1,85 @@ +#!/bin/bash + +# Util to pretty-print logfile of NetworkManager +# +# Unless setting NM_LOG_NO_COLOR it will colorize the output. +# Suppress coloring with: +# $ NM_LOG_NO_COLOR=1 NM-log ... +# +# If called without arguments, it either reads from stdin (if not +# connected to a terminal) or it shows the journal content. +# +# If called with first argument "j", it always shows the journal content. +# +# You can pass multiple filenames. + +if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then + NM_not_sourced=1 +else + unset NM_not_sourced +fi + +NM-show-journal() { + local since="$(systemctl show NetworkManager | sed -n 's/^ExecMainStartTimestamp=\(.*\) [A-Z0-9]\+$/\1/p')" + + if [[ "$since" == "" ]]; then + echo "error detecting NM. Is it running?" + systemctl status NetworkManager + else + journalctl -o short-precise --since "$since" -b 0 -u NetworkManager "$@" + fi +} + +NM-colorize() { + if [[ "$NM_LOG_NO_COLOR" == "" ]]; then + # poor man's coloring using grep. + # TODO: do it somehow better (and more efficient). + sed 's/\r$//' | \ + GREP_COLOR='01;31' grep -a --color=always '^\|^\(.* \)\?<\(warn> \|error>\) \[[0-9.]*\]' | \ + GREP_COLOR='01;33' grep -a --color=always '^\|^\(.* \)\?<info> \[[0-9.]*\]\( .*\<is starting\>.*$\)\?' | \ + GREP_COLOR='01;37' grep -a --color=always '^\|\<platform:\( (.*)\)\? signal: .*$' | \ + GREP_COLOR='01;34' grep -a --color=always '^\|\<platform\(-linux\)\?:\( (.*)\)\? link: \(add\|adding\|change\|setting\|deleting\|enslaving to master\|releasing \([0-9]\+ \)\?from master\)\>\|\<platform: routing-rule: \(adding or updating:\|delete \)\|\<platform:\( (.*)\)\? address: \(deleting\|adding or updating\) IPv. address:\? \|\<platform:\( (.*)\)\? \(route\|ip4-route\|ip6-route\|qdisc\|tfilter\): \([a-z]\+\|adding or updating\|new\[0x[0-9A-Za-z]*\]\) \|\<platform-linux: sysctl: setting ' | \ + GREP_COLOR='01;35' grep -a --color=always '^\|\<audit: .*$' | \ + GREP_COLOR='01;32' grep -a --color=always '^\|\<device (.*): state change: ' | + if [[ "$NM_LOG_GREP" != "" ]]; then + GREP_COLOR='01;36' grep -a --color=always "^\\|$NM_LOG_GREP" + else + /bin/cat - + fi + else + /bin/cat - + fi +} + +NM-log() { + local NM_LOG_GREP= + + while [[ $# -gt 0 ]]; do + if [[ "$1" == "-h" ]]; then + shift + NM_LOG_GREP="${NM_LOG_GREP+$NM_LOG_GREP\\|}\\<$1\\>" + shift + else + break + fi + done + + ( + if [ "$1" == "j" ]; then + shift + NM-show-journal "$@" + elif [ "$#" -eq 0 -a -t 0 ]; then + NM-show-journal + else + a="${1--}" + shift + /usr/bin/less -f "$a" "$@" + fi + ) | \ + NM_LOG_GREP="$NM_LOG_GREP" NM-colorize | \ + LESS=FRSXM less -f -R --shift=5 +} + +if [[ "$NM_not_sourced" != "" ]]; then + NM-log "$@" +fi |