bin: script updates
This commit is contained in:
parent
9829b58ee7
commit
b6d8ad24f2
|
@ -11,7 +11,6 @@
|
||||||
# video thumbnails via mtn, pdf pages from pdftoppm
|
# video thumbnails via mtn, pdf pages from pdftoppm
|
||||||
# - text files are displayed through bat
|
# - text files are displayed through bat
|
||||||
# Usually automatically requests elevation through sudo when needed
|
# Usually automatically requests elevation through sudo when needed
|
||||||
# TODO .raw,.iso,.qcow2
|
|
||||||
|
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
|
@ -42,15 +41,22 @@ fileinfo() {
|
||||||
tput smso
|
tput smso
|
||||||
$elevate file --exclude elf -E "$arg"
|
$elevate file --exclude elf -E "$arg"
|
||||||
tput rmso
|
tput rmso
|
||||||
$elevate ssh-keygen -l -f "$arg" 2>/dev/null || true
|
|
||||||
|
size=$(stat --format=%s "$arg")
|
||||||
|
# Check if SSH key (<10KB then read)
|
||||||
|
if test "$size" -lt 10000
|
||||||
|
then $elevate ssh-keygen -l -f "$arg" 2>/dev/null
|
||||||
|
fi
|
||||||
# I think this check is here to avoid scrolling text interpreted as video
|
# I think this check is here to avoid scrolling text interpreted as video
|
||||||
#probe="$($elevate ffprobe "$arg" 2>&1)"
|
#probe="$($elevate ffprobe "$arg" 2>&1)"
|
||||||
#echo $probe | grep -v -e '00:00:00.04' -e 'ansi' &&
|
#echo $probe | grep -v -e '00:00:00.04' -e 'ansi' &&
|
||||||
{ ! $inspect && $elevate ffprobe -hide_banner "$arg" 2>&1 | grep -E "bitrate: .{3,5} " | sed 's/, start:[^,]\+,/,/'; } ||
|
# Print media infos over file infos when <2G
|
||||||
$elevate stat --format "%U:%G %A %s $(
|
if ! { test "$size" -lt 2000000000 && $elevate ffprobe -hide_banner "$arg" 2>&1 | grep -E "bitrate: .{3,5} " | sed 's/, start:[^,]\+,/,/'; } || $inspect
|
||||||
|
then $elevate stat --format "%U:%G %A %s $(
|
||||||
size="$($elevate unzip -l "$arg" 2>/dev/null | tail -1)" &&
|
size="$($elevate unzip -l "$arg" 2>/dev/null | tail -1)" &&
|
||||||
echo "(uncompressed $(echo $size | cut -d' ' -f1 | numfmt --to=iec-i --suffix=B))"
|
echo "(uncompressed $(echo $size | cut -d' ' -f1 | numfmt --to=iec-i --suffix=B))"
|
||||||
) - birth %.10w mod %.10y" "$arg" | numfmt --field=3 --to=iec-i --padding=6 --suffix=B
|
) - birth %.10w mod %.10y" "$arg" | numfmt --field=3 --to=iec-i --padding=6 --suffix=B
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
tput sgr0
|
tput sgr0
|
||||||
}
|
}
|
||||||
|
@ -68,7 +74,7 @@ for arg; do
|
||||||
fi
|
fi
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
# amount of columns in a grid
|
# amount of items to display per line in a grid for two lines max
|
||||||
grid=$(expr $(tput cols) / \( 25 - \( $# / 2 \) \& $# \< 30 \| 5 \))
|
grid=$(expr $(tput cols) / \( 25 - \( $# / 2 \) \& $# \< 30 \| 5 \))
|
||||||
tmpfile="$prefix/$(basename -- "$arg")_$(dd "if=$arg" bs=512 count=10 2>/dev/null | md5sum | tr -d ' ' || true)"
|
tmpfile="$prefix/$(basename -- "$arg")_$(dd "if=$arg" bs=512 count=10 2>/dev/null | md5sum | tr -d ' ' || true)"
|
||||||
mkdir -p "$prefix"
|
mkdir -p "$prefix"
|
||||||
|
@ -93,8 +99,11 @@ for arg; do
|
||||||
echo Converting "$arg"
|
echo Converting "$arg"
|
||||||
convert -flatten "$arg" png:"$tmpfile"
|
convert -flatten "$arg" png:"$tmpfile"
|
||||||
timg+=("$tmpfile");;
|
timg+=("$tmpfile");;
|
||||||
|
# TODO .raw .img
|
||||||
|
(*/x-iso*|*/x-qemu-disk*) fdisk -l "$arg";;
|
||||||
(*\ video/*)
|
(*\ video/*)
|
||||||
suffix=_thumbs.jpg
|
suffix=_thumbs.jpg
|
||||||
|
! $inspect &&
|
||||||
# TODO sometimes duration mismatch for short videos
|
# TODO sometimes duration mismatch for short videos
|
||||||
test $(printf "%.0f" $(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$arg")) -gt 3 &&
|
test $(printf "%.0f" $(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$arg")) -gt 3 &&
|
||||||
mtn -q -i -t -W -r$(expr 5 - $# \& $# \< 4 \| 1) -D6 -b 0.6 -c $grid -w $(expr $(tput cols) '*' 20) \
|
mtn -q -i -t -W -r$(expr 5 - $# \& $# \< 4 \| 1) -D6 -b 0.6 -c $grid -w $(expr $(tput cols) '*' 20) \
|
||||||
|
@ -162,7 +171,7 @@ if test "$timg"; then
|
||||||
if which timg >/dev/null
|
if which timg >/dev/null
|
||||||
then $elevate timg $(test "$timga" && echo "-V") --rotate=exif -g $(tput cols)x$(expr $(tput lines) / 2) \
|
then $elevate timg $(test "$timga" && echo "-V") --rotate=exif -g $(tput cols)x$(expr $(tput lines) / 2) \
|
||||||
$(test $# -gt 1 &&
|
$(test $# -gt 1 &&
|
||||||
echo "-t0.2 --auto-crop --center $(test $# -lt 20 && echo "--title") --grid=$((grid < $# ? grid : $#))x2") \
|
echo "-t0.2 --auto-crop --center $(test $# -lt 20 && echo "--title") --grid=$(((grid < $# ? grid : $#) / 2))x") \
|
||||||
"${timg[@]}" "${timga[@]}" 2>/dev/null || true
|
"${timg[@]}" "${timga[@]}" 2>/dev/null || true
|
||||||
else for img in "${timg[@]}"
|
else for img in "${timg[@]}"
|
||||||
do catimg -H $(expr $(tput lines) / 2) $img
|
do catimg -H $(expr $(tput lines) / 2) $img
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
# Rename a file with a backup suffix or revert it
|
# Rename a file with a backup suffix or revert it
|
||||||
# Add -a to act on multiple files,
|
# Add -a to act on multiple files,
|
||||||
# otherwise the second arg is used as suffix rather than the default "bak".
|
# otherwise the second arg is used as suffix rather than the default "bak".
|
||||||
# TODO no sudo for symlinks
|
|
||||||
if test "$1" = "-a"; then
|
if test "$1" = "-a"; then
|
||||||
shift
|
shift
|
||||||
for arg; do "$0" "$arg"; done
|
for arg; do "$0" "$arg"; done
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
bluetoothctl devices
|
|
@ -78,7 +78,7 @@ highlight "c :: clean electron caches"
|
||||||
|
|
||||||
highlight "o :: optimize space extensively"
|
highlight "o :: optimize space extensively"
|
||||||
if [[ $1 =~ "o" ]]; then
|
if [[ $1 =~ "o" ]]; then
|
||||||
sudo find $XDG_CACHE_HOME /var/cache /var/log /var/tmp -mindepth 1 -maxdepth 2 -atime +2 -exec rm -r {} + -prune
|
sudo find /root/.cache $XDG_CACHE_HOME /var/cache /var/log /var/tmp -mindepth 1 -maxdepth 2 -atime +2 -exec rm -r {} + -prune
|
||||||
|
|
||||||
if test -f "/var/log/apt/history.log"; then
|
if test -f "/var/log/apt/history.log"; then
|
||||||
aptclean_cur=$(cat "/var/log/apt/history.log" | wc -l)
|
aptclean_cur=$(cat "/var/log/apt/history.log" | wc -l)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
# Flatten folder hierarchy
|
# Flatten folder hierarchies
|
||||||
# Args: depth
|
# Moves subfolders up one layer, replacing the slash by underscore unless the parent folder has the same name.
|
||||||
|
# Args: depth of leaf folders to move up
|
||||||
depth=$(expr 1 \& $# \| 2)
|
depth=$(expr 1 \& $# \| 2)
|
||||||
case $1 in ([0-9]|[0-9][0-9]) depth=$1; shift;; esac
|
case $1 in ([0-9]|[0-9][0-9]) depth=$1; shift;; esac
|
||||||
find "$@" -mindepth $depth -maxdepth $depth -depth -type d | while read folder; do
|
find "$@" -mindepth $depth -maxdepth $depth -depth -type d | while read folder; do
|
||||||
|
|
|
@ -7,10 +7,12 @@
|
||||||
# - host
|
# - host
|
||||||
# - target directory name (and further arguments to clone)
|
# - target directory name (and further arguments to clone)
|
||||||
# In an existing repo, first arg is omitted
|
# In an existing repo, first arg is omitted
|
||||||
|
# TODO: transform https://codeberg.org/forgejo-contrib/forgejo-helm -> forgejo-helm forgejo-contrib "" codeberg.org
|
||||||
if test -d ".git" # TODO search upwards
|
if test -d ".git" # TODO search upwards
|
||||||
then repo="$(basename "$PWD")"
|
then repo="$(basename "$PWD")"
|
||||||
git remote set-url origin "$(git-repo "${3:-github.com}" "$repo" "${2:-$(git config --get user.name)}" "${@:4}")"
|
git remote set-url origin "$(git-repo "${3:-github.com}" "$repo" "${2:-$(git config --get user.name)}" "${@:4}")"
|
||||||
else test $# -eq 0 && echo "Usage: $0 [repo (omit if in repo)] [upstream owner] [own user] [url]" && exit 2
|
git remote remove upstream 2>/dev/null || true
|
||||||
|
else test $# -eq 0 && echo "Usage: $0 <repo (omit if in repo)> <upstream owner> [own user] [host]" && exit 2
|
||||||
repo="$1" && shift
|
repo="$1" && shift
|
||||||
if test "$#" -eq 0
|
if test "$#" -eq 0
|
||||||
then git-get "$repo"
|
then git-get "$repo"
|
||||||
|
@ -24,7 +26,6 @@ else test $# -eq 0 && echo "Usage: $0 [repo (omit if in repo)] [upstream owner]
|
||||||
cd "$(basename "$(expr "$4" \| "$repo")")"
|
cd "$(basename "$(expr "$4" \| "$repo")")"
|
||||||
fi
|
fi
|
||||||
user="${1:-$repo}"
|
user="${1:-$repo}"
|
||||||
git remote remove upstream 2>/dev/null || true
|
git-upstream "$user"
|
||||||
git remote add upstream "$(git-repo "${3:-github.com}" "$repo" "$user")"
|
#git remote add upstream "$(git-repo "${3:-github.com}" "$repo" "$user")"
|
||||||
git remote -v
|
|
||||||
exec $SHELL
|
exec $SHELL
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# set given repository as upstream or add as a new remote
|
# Set given repository as upstream or add as a new remote
|
||||||
# ARGS:
|
test $# -lt 1 && echo "$0 <user> [repo] [remote-name]" && exit 1
|
||||||
# - user/org
|
|
||||||
# - repo
|
|
||||||
# - remote name
|
|
||||||
if test "$3"
|
if test "$3"
|
||||||
then
|
then
|
||||||
name="$3"
|
name="$3"
|
||||||
|
@ -12,5 +9,5 @@ else
|
||||||
git remote get-url upstream >/dev/null 2>&1 && name="$1" || name="upstream"
|
git remote get-url upstream >/dev/null 2>&1 && name="$1" || name="upstream"
|
||||||
fi
|
fi
|
||||||
origin="$(git remote get-url origin)"
|
origin="$(git remote get-url origin)"
|
||||||
git remote add -f $name "$(echo $origin | cut -d':' -f1):$1/${2:-$(echo $origin | cut -d'/' -f2)}"
|
git remote add -f "$name" "$(echo $origin | cut -d':' -f1):$1/${2:-$(echo $origin | cut -d'/' -f2)}"
|
||||||
git remote -v
|
git remote -v
|
||||||
|
|
|
@ -28,6 +28,8 @@ cmd="$1"
|
||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
(fwupdmgr|hunt|rdoc|gh|chordpro|bat|pdfjam|reflector|topgrade|r128gain|7z|kubectl|diffr|docker|jrnl|difft|wiked-diff|qpdf|ninja)
|
(fwupdmgr|hunt|rdoc|gh|chordpro|bat|pdfjam|reflector|topgrade|r128gain|7z|kubectl|diffr|docker|jrnl|difft|wiked-diff|qpdf|ninja)
|
||||||
unbuffer "$@" --help | sed 's|^[^ ].*:|[1m\0[22m|' | $paginate;;
|
unbuffer "$@" --help | sed 's|^[^ ].*:|[1m\0[22m|' | $paginate;;
|
||||||
|
(sqlcmd) sqlcmd -?;;
|
||||||
|
(exa) "$0" eza;;
|
||||||
(caddy|stretchly|go|flutter)
|
(caddy|stretchly|go|flutter)
|
||||||
shift
|
shift
|
||||||
"$cmd" help "$@" | $paginate;;
|
"$cmd" help "$@" | $paginate;;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Find terms in jrnl and turn them into tags
|
# Find terms in jrnl files and turn them into tags
|
||||||
# Check with jrnl --tags
|
# Check with jrnl --tags
|
||||||
if test $# -eq 0
|
if test $# -eq 0
|
||||||
then $0 sleep nap health tech read dev phone Zinc run bike tour laptop computer PC CB piano faith journal
|
then $0 sleep nap health tech read dev phone Zinc run bike tour laptop computer PC CB piano faith journal
|
||||||
else
|
else
|
||||||
for arg
|
for arg
|
||||||
do rpl "\(^\|[^@]\)\b$arg\b" "\1@$arg" $JOURNAL/*.txt
|
do rpl "\(^\|[^@]\)\b$arg\b" "\1@$arg" $JOURNAL/*.txt 2>/dev/null
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
ns=${1:-stackspin}
|
||||||
|
case "$1" in
|
||||||
|
("") /opt/k8sviz/k8sviz.sh --help;;
|
||||||
|
(-*) /opt/k8sviz/k8sviz.sh "$@";;
|
||||||
|
(*) set -x
|
||||||
|
/opt/k8sviz/k8sviz.sh --kubeconfig $KUBECONFIG --namespace "$ns" -t png -o "$(date +%y%m%d)_$ns.png";;
|
||||||
|
esac
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
# Mount a partition by label or device identifier automatically
|
# Mount a partition by label or device identifier automatically
|
||||||
# Includes interactive selection if no argument is given
|
# Includes interactive selection if no argument is given
|
||||||
# TODO losetup for raw and qcow2, including lvm handling
|
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
_help="$0 <device> [mountpoint] [options...]"
|
_help="$0 <device> [mountpoint] [options...]"
|
||||||
case $1 in
|
case $1 in
|
||||||
|
@ -30,11 +29,13 @@ esac
|
||||||
|
|
||||||
# FILE as loopback device
|
# FILE as loopback device
|
||||||
if test -f "$arg"
|
if test -f "$arg"
|
||||||
then set -e
|
then loopdevice="$(sudo losetup -f)"
|
||||||
loopdevice="$(sudo losetup -f)"
|
if sudo losetup -P -v "$loopdevice" "$arg"
|
||||||
sudo losetup -P -v "$loopdevice" "$arg"
|
then $0 "$loopdevice" ||
|
||||||
$0 "$loopdevice"
|
{ sudo vgchange -ay &&
|
||||||
exit $?
|
sudo pvs | grep "$loopdevice" | awk '{print $2}' | xargs -I% find /dev/% -mindepth 1 -exec sudo sh -c 'dir=/mnt/$(echo "{}" | sed "s|/dev/||;s|/|-|g") && mkdir -vp "$dir" && mount {} "$dir"' \; ; }
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# FSTAB: BY LABEL
|
# FSTAB: BY LABEL
|
||||||
|
|
|
@ -16,7 +16,9 @@ do
|
||||||
|
|
||||||
# Clean empty files
|
# Clean empty files
|
||||||
$elevate find -name '.thumbnails' -printf 'Pre-cleaning %p\n' -exec rm -r {} +
|
$elevate find -name '.thumbnails' -printf 'Pre-cleaning %p\n' -exec rm -r {} +
|
||||||
$elevate find -H "$f" -maxdepth $(expr 1 \& "$f" = "/" \| 5 \& $# \> 0 \| 3) \( -name '.stfolder' -o -name '.*keep' -o -name '*.py' -o -name 'nodelay.txt' -o -name '.git' -o -name 'tmp' -o -name '.nomedia' -o -name '__init__.py' -o -name '*ignore' -o -name 'instalee' \) \( -type d -o -type f \) -prune -o -empty -printf 'Removing empty %p\n' #-exec rm -d {} +
|
$elevate find -H "$f" -maxdepth $(expr 1 \& "$f" = "/" \| 5 \& $# \> 0 \| 3) \
|
||||||
|
\( -name '.stfolder' -o -name '.*keep' -o -name '*.py' -o -name 'nodelay.txt' -o -name '.git' -o -name 'tmp' -o -name '.nomedia' -o -name '__init__.py' -o -name '*ignore' -o -name 'instalee' \) \
|
||||||
|
\( -type d -o -type f \) -prune -o -empty -printf 'Removing empty %p\n' -exec rm -d {} +
|
||||||
# $elevate find -H "$f" -maxdepth $(expr 1 \& "$f" = "/" \| 5 \& $# \> 0 \| 4) -type d -empty -name .stfolder -exec rm -div {} \;
|
# $elevate find -H "$f" -maxdepth $(expr 1 \& "$f" = "/" \| 5 \& $# \> 0 \| 4) -type d -empty -name .stfolder -exec rm -div {} \;
|
||||||
test $# -eq 0 && exit $?
|
test $# -eq 0 && exit $?
|
||||||
if test -e "$f"; then
|
if test -e "$f"; then
|
||||||
|
|
|
@ -4,6 +4,6 @@
|
||||||
export chars=$(expr $(tput cols) - 60)
|
export chars=$(expr $(tput cols) - 60)
|
||||||
case "$1" in (+*) size=${1#+}G; depth=2; shift;; esac
|
case "$1" in (+*) size=${1#+}G; depth=2; shift;; esac
|
||||||
case "$1" in ([0-9]) depth=$1; shift;; esac
|
case "$1" in ([0-9]) depth=$1; shift;; esac
|
||||||
(du --max-depth "${depth:-1}" -xhat ${size:-500M} "$@" | sort -h | grep -v "^0") |
|
(du --max-depth "${depth:-1}" -xhat ${size:-50M} "$@" | sort -h | grep -v "^0") |
|
||||||
while read line; do echo "$(tput smso)$line$(tput rmso) $(pacman -Qqo $(echo $line | awk '{print $2}') 2>/dev/null | paste -s -d',' | sed "s/\(.\{${chars}\}\).*/\1.../")"; done || #| column -t ||
|
while read line; do echo "$(tput smso)$line$(tput rmso) $(pacman -Qqo $(echo $line | awk '{print $2}') 2>/dev/null | paste -s -d',' | sed "s/\(.\{${chars}\}\).*/\1.../")"; done || #| column -t ||
|
||||||
(du --max-depth "${depth:-1}" -xha "$@" | sort -h | tail)
|
(du --max-depth "${depth:-1}" -xha "$@" | sort -h | tail)
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
# Trims everything beyond the given page number
|
# Trims everything beyond the given page number
|
||||||
test "$1" = "-q" && quiet=$1 && shift
|
test "$1" = "-q" && quiet=$1 && shift
|
||||||
case "$1" in ([0-9]) page=$1; shift;; esac
|
case "$1" in ([0-9]) page=$1; shift;; esac
|
||||||
test ! -r "$1" && echo "Usage: sign [page] <document.pdf> [hoffset (-160) [voffset (-310) [scale [signature-image]]]]" && exit 1
|
test $# -lt 2 && echo "Usage: sign [page] <document.pdf> [hoffset (-160) [voffset (-310) [scale [signature-image]]]]"
|
||||||
|
test ! -r "$1" && exit 1
|
||||||
|
|
||||||
tmp_base=/tmp/sign
|
tmp_base=/tmp/sign
|
||||||
mkdir -p $tmp_base
|
mkdir -p $tmp_base
|
||||||
|
|
|
@ -7,3 +7,4 @@
|
||||||
# Any other arguments (usually pathnames) are passed on to the tree command
|
# Any other arguments (usually pathnames) are passed on to the tree command
|
||||||
case "$1" in ([0-9]) depth=$1; shift;; esac
|
case "$1" in ([0-9]) depth=$1; shift;; esac
|
||||||
tree --dirsfirst --du -h -C -L ${depth:-3} -I node_modules "$@" | ${PAGER:-less} -rF
|
tree --dirsfirst --du -h -C -L ${depth:-3} -I node_modules "$@" | ${PAGER:-less} -rF
|
||||||
|
# TODO consider exa -T -L X
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh -e
|
#!/bin/sh -e
|
||||||
test -f "$1" || cd "$XDG_DATA_HOME/openvpn"
|
test -f "$1" || cd "$XDG_DATA_HOME/openvpn"
|
||||||
tmux new-session -s "$@" "sudo openvpn $@"
|
tmux new-session -s "$@" "sudo openvpn $@ || read"
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh -x
|
||||||
|
# wg-quick reload interface
|
||||||
|
wg syncconf "$@" <(wg-quick strip "$@")
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
# Source: https://serverfault.com/questions/285256/how-to-unban-an-ip-properly-with-fail2ban/1023005#1023005
|
||||||
|
test $# -eq 0 && sudo fail2ban-client status && exit 0
|
||||||
|
echo "Jails where $1 is locked up:"
|
||||||
|
JAILS=`fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'`
|
||||||
|
for JAIL in $JAILS
|
||||||
|
do
|
||||||
|
currentjail=`fail2ban-client status $JAIL | grep -B 8 $1 | grep Status | awk '{printf $5}'`
|
||||||
|
if [[ ${#currentjail} -gt a ]] ; then
|
||||||
|
echo $currentjail
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo
|
||||||
|
echo "To unban $1 use the following commands:"
|
||||||
|
for JAIL in $JAILS
|
||||||
|
do
|
||||||
|
currentjail=`fail2ban-client status $JAIL | grep -B 8 $1 | grep Status | awk '{printf $5}'`
|
||||||
|
if [[ ${#currentjail} -gt a ]] ; then
|
||||||
|
echo "fail2ban-client set $currentjail unbanip $1"
|
||||||
|
fi
|
||||||
|
done
|
Loading…
Reference in New Issue