refactor: more new session loading to anything under "load" subirectory (by default) still can add additional loading directories as before.
refactor of debug module using BASH_DEBUG as filename in user shell suddirectory logs/ improved bindfs and btrfs modulesmaster
parent
99c01d4bb7
commit
0d4481e291
|
@ -11,5 +11,6 @@
|
||||||
LICENSE
|
LICENSE
|
||||||
*.sample
|
*.sample
|
||||||
*archive*/
|
*archive*/
|
||||||
|
*.off/
|
||||||
off/
|
off/
|
||||||
log*/
|
log*/
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
alias
|
|
||||||
env
|
|
||||||
functions
|
|
|
@ -1 +0,0 @@
|
||||||
alias caddyr="ssh -t nas "/opt/scripts/caddyr""
|
|
|
@ -1,7 +0,0 @@
|
||||||
# using firehol
|
|
||||||
alias fwstp="sudo firehol stop"
|
|
||||||
alias fws="sudo firehol start"
|
|
||||||
alias fwdf="/opt/firehol/scripts/default"
|
|
||||||
alias fwt="/opt/firehol/scripts/try"
|
|
||||||
alias fwdb="/opt/firehol/scripts/debug"
|
|
||||||
alias fwm="/opt/firehol/scripts/merge"
|
|
|
@ -1,4 +0,0 @@
|
||||||
# run this on remote machine via ssh x11 forwarding
|
|
||||||
alias rmintupdate='XAUTHORITY=/home/sysadmin/.Xauthority sudo -E mintupdate'
|
|
||||||
alias rsources='XAUTHORITY=/home/sysadmin/.Xauthority sudo -E software-sources'
|
|
||||||
alias rsynaptic='XAUTHORITY=/home/sysadmin/.Xauthority sudo -E synaptic'
|
|
|
@ -1,4 +0,0 @@
|
||||||
# nas
|
|
||||||
alias naslist="echo nasfm nasdisk nasgparted nasdata, caddyr, caddye"
|
|
||||||
alias nasha="ssh -t nas 'cd /usr/share/hassio/homeassistant ; bash'"
|
|
||||||
alias nascaddy="ssh -t nas 'cd /opt/caddy ; bash'"
|
|
|
@ -2,7 +2,6 @@
|
||||||
# 00 will get loaded first
|
# 00 will get loaded first
|
||||||
|
|
||||||
##
|
##
|
||||||
module_load systemd
|
|
||||||
|
|
||||||
user_reload() {
|
user_reload() {
|
||||||
save=$PWD
|
save=$PWD
|
||||||
|
@ -84,6 +83,7 @@ gpg -a --export $1 | sudo apt-key add -
|
||||||
}
|
}
|
||||||
|
|
||||||
osinfo () {
|
osinfo () {
|
||||||
|
hostnamectl
|
||||||
echo kernel: $(uname -r)
|
echo kernel: $(uname -r)
|
||||||
echo machine: $(arch)
|
echo machine: $(arch)
|
||||||
cat /etc/os-release
|
cat /etc/os-release
|
|
@ -25,8 +25,47 @@ make_base_subvols() {
|
||||||
|
|
||||||
alias btvl="sudo btrfs subvolume list"
|
alias btvl="sudo btrfs subvolume list"
|
||||||
|
|
||||||
|
|
||||||
|
snapshot_restore () {
|
||||||
|
local src=$1
|
||||||
|
local dest=$2
|
||||||
|
local name=${3:-$(echo $src| rev | cut -f 2- -d '.' | rev)}
|
||||||
|
local usesudo
|
||||||
|
echo copying $src at $PWD to $2 then renaming to $name
|
||||||
|
# TODO check for snapshot, strip volume from source path, remove extra snapshot when done
|
||||||
|
[[ $EUID -ne 0 ]] && usesudo=sudo
|
||||||
|
$usesudo btrfs send $src | $usesudo btrfs -q receive $dest
|
||||||
|
# cd $2 || return
|
||||||
|
$usesudo btrfs subvolume snapshot $dest/$src $dest/$name
|
||||||
|
# todo check for snapshot then delete transfered one
|
||||||
|
}
|
||||||
|
|
||||||
# ALL ALL = (root) NOPASSWD:/bin/btrfs
|
# ALL ALL = (root) NOPASSWD:/bin/btrfs
|
||||||
|
|
||||||
# btrfs send rootfs-nadal-$(date +"%d-%m-%Y") | btrfs receive /backup/images/snaps/rootfs
|
subvolume_size () {
|
||||||
# btrfs subvolume snapshot -r / /backup/rootfs-nadal-$(date +"%d-%m-%Y")
|
local all;
|
||||||
# tar -cvpzf /backup/images/nadal-fs.tar.gz --one-file-system /
|
[[ $1 == "-a" ]] && all=true
|
||||||
|
if [[ $all ]]; then
|
||||||
|
sudo btrfs qgroup show "${2:-$PWD}" --kbytes | tail -n +3
|
||||||
|
str=$(sudo btrfs qgroup show "${2:-$PWD}" --kbytes | tail -n +3);
|
||||||
|
else
|
||||||
|
sudo btrfs qgroup show "${2:-$PWD}" --kbytes | grep $1
|
||||||
|
str=$(sudo btrfs qgroup show "${2:-$PWD}" --kbytes | grep $1)
|
||||||
|
fi
|
||||||
|
# echo $str
|
||||||
|
|
||||||
|
subvolumeFolderSize=0;
|
||||||
|
|
||||||
|
while read line; do
|
||||||
|
FIELDS=( $line )
|
||||||
|
thisLineKb="${FIELDS[2]/'.00KiB'/''}";
|
||||||
|
# echo $thisLineKb
|
||||||
|
subvolumeFolderSize=$((subvolumeFolderSize+thisLineKb));
|
||||||
|
done <<< "$str"
|
||||||
|
|
||||||
|
[[ $all ]] && echo "size of entire filesystem at ${2:-$PWD}" || echo size of subvolumes/snapshots $1 at "${2:-$PWD}"
|
||||||
|
echo $subvolumeFolderSize KB
|
||||||
|
echo "~ $((subvolumeFolderSize/1024)) MB"
|
||||||
|
echo "~ $((subvolumeFolderSize/1024/1024)) GB"
|
||||||
|
|
||||||
|
}
|
|
@ -1,14 +1,34 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# TODO allow debug to have managment flags and levels
|
# TODO allow debug to have managment flags and levels
|
||||||
function debug () {
|
function debug () {
|
||||||
[[ $BASH_DEBUG ]] && echo -e "#### DEBUG ####\n $@ \n#####" >&2
|
|
||||||
|
if [[ $BASH_DEBUG ]]; then
|
||||||
|
if [[ $BASH_DEBUG == "stdout" ]]; then
|
||||||
|
echo -e "#### DEBUG ####\n $@ \n#####" >&2
|
||||||
|
else
|
||||||
|
local logfile=$BASH_SHELL_USER_DIR/logs/$BASH_DEBUG.log
|
||||||
|
[[ $1 == "-r" ]] && echo "$(date) Debugging log file, see debug.lib module" > $logfile && return
|
||||||
|
echo -e "$@" >&2 >> $logfile
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# [[ $test ]] && return
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# alias debug_on="sudo -i uncomment BASH_DEBUG /etc/bash.bashrc"
|
function debug_reset () {
|
||||||
# alias debug_off="sudo -i comment BASH_DEBUG /etc/bash.bashrc"
|
|
||||||
|
local logfile=$BASH_SHELL_USER_DIR/logs/$1.log
|
||||||
|
echo clearing $logfile
|
||||||
|
echo "$logfile at $(date)" > $logfile
|
||||||
|
shift
|
||||||
|
echo $@ >> $logfile
|
||||||
|
echo -e "#####################" >> $logfile
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# *************** DEBUGGING ***********************
|
## *************** DEBUGGING ***********************
|
||||||
# module_load debug
|
# module_load debug
|
||||||
# if [[ $? -ne 0 ]]; then
|
# if [[ $? -ne 0 ]]; then
|
||||||
# echo "unable to load a 'debug' module using a noop for debug function"
|
# echo "unable to load a 'debug' module using a noop for debug function"
|
||||||
|
|
|
@ -7,7 +7,7 @@ shell_source_subdirs () {
|
||||||
local SUBDIRS
|
local SUBDIRS
|
||||||
local IGNORE_FILE
|
local IGNORE_FILE
|
||||||
DIR=$1
|
DIR=$1
|
||||||
SUBDIRS=$([[ -f "$DIR/.bash-shell-include" ]] && cat "$DIR/.bash-shell-include" || cat "$BASH_SHELL_BASE/.bash-shell-include")
|
SUBDIRS="load $([[ -f "$DIR/.bash-shell-include" ]] && cat "$DIR/.bash-shell-include" || cat "$BASH_SHELL_BASE/.bash-shell-include")"
|
||||||
[[ $SSH_SESSION ]] && SUBDIRS+=" ssh/session"
|
[[ $SSH_SESSION ]] && SUBDIRS+=" ssh/session"
|
||||||
IGNORE_FILE="$([[ -f "$DIR/.bash-shell-ignore" ]] && echo "$DIR" || echo "$BASH_SHELL_BASE")/.bash-shell-ignore"
|
IGNORE_FILE="$([[ -f "$DIR/.bash-shell-ignore" ]] && echo "$DIR" || echo "$BASH_SHELL_BASE")/.bash-shell-ignore"
|
||||||
# echo $DIR
|
# echo $DIR
|
||||||
|
@ -15,13 +15,7 @@ shell_source_subdirs () {
|
||||||
for SUBDIR in $SUBDIRS; do
|
for SUBDIR in $SUBDIRS; do
|
||||||
if [ -e "$DIR/$SUBDIR" ]; then
|
if [ -e "$DIR/$SUBDIR" ]; then
|
||||||
# echo processing subdirectory $DIR/$SUBDIR
|
# echo processing subdirectory $DIR/$SUBDIR
|
||||||
# must quote all globs to avoid bash glob expansion which is likely on
|
|
||||||
# TODO have default set of ignores plus check for shell-ignore
|
|
||||||
# source_dir -p "archive" -x '"*.off" "*.md" "*TODO*" "LICENSE" "*.sample"' -d 0 $DIR/$SUBDIR
|
|
||||||
# source_dir -p "archive" -x "$excludes" -d 0 $DIR/$SUBDIR
|
|
||||||
source_dir -f "$IGNORE_FILE" -d 0 $DIR/$SUBDIR
|
source_dir -f "$IGNORE_FILE" -d 0 $DIR/$SUBDIR
|
||||||
# else
|
|
||||||
# echo no subdirectory $DIR/$SUBDIR to process, ignorning
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#bmount () {}
|
|
||||||
# sudo bindfs -o allow_other -o map=root/1001:@root/@1001 /var/lib/docker/volumes /data/dvols
|
|
||||||
|
|
||||||
|
|
||||||
dir_rebind_user () {
|
|
||||||
local usesudo; local dir;local user;local group
|
|
||||||
# $1 new owner
|
|
||||||
# $2 dir
|
|
||||||
|
|
||||||
[ $# -lt 2 ] && echo minimum args needed to rebind are user and directory && return 1
|
|
||||||
[[ $EUID -ne 0 ]] && usesudo=sudo
|
|
||||||
|
|
||||||
[[ $(id -u $1 2> /dev/null) ]] || { echo user $1 does not exist can not continue; return 2; }
|
|
||||||
|
|
||||||
dir=$(realpath $2)
|
|
||||||
user=$(stat -c '%U' $dir)
|
|
||||||
group=$(stat -c '%G' $dir)
|
|
||||||
$usesudo bindfs --force-user=$1 --force-group=$1 --create-for-user=$user --create-for-group=$group --chown-ignore --chgrp-ignore $dir $dir
|
|
||||||
# echo use \'dir_rebind_user_remove $dir\' to remove
|
|
||||||
}
|
|
||||||
|
|
||||||
dir_rebind_user_remove () {
|
|
||||||
local usersudo
|
|
||||||
[[ $EUID -ne 0 ]] && usesudo=sudo
|
|
||||||
$usesudo fusermount -u $1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -v PS1 ]; then
|
|
||||||
alias dru="dir_rebind_user"
|
|
||||||
alias drur="dir_rebind_user_remove"
|
|
||||||
fi
|
|
|
@ -48,8 +48,13 @@ function lines_2_str () {
|
||||||
echo $str
|
echo $str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# find, superceeds find use `command find` to get the super
|
# find, superceeds find use `command find` to get the super
|
||||||
function _find () {
|
function _find () {
|
||||||
|
|
||||||
|
# BASH_DEBUG=find
|
||||||
|
|
||||||
# USAGE
|
# USAGE
|
||||||
# all option arguments that contain globs/wildcards must be quoted to avoid expansion
|
# all option arguments that contain globs/wildcards must be quoted to avoid expansion
|
||||||
# f sets path and file excludes from a supplied file path
|
# f sets path and file excludes from a supplied file path
|
||||||
|
@ -196,14 +201,16 @@ return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
source_dir () {
|
source_dir () {
|
||||||
# echo passed: $*
|
# BASH_DEBUG=source_dir
|
||||||
|
|
||||||
|
debug source_dir passed arguments: $*
|
||||||
debug function: source_dir
|
debug function: source_dir
|
||||||
local FILES
|
local FILES
|
||||||
FILES=$(_find "$@") # find function
|
FILES=$(_find "$@") # find function
|
||||||
# echo $FILES >&2
|
# echo $FILES >&2
|
||||||
[[ $? -ne 0 ]] && return 1
|
[[ $? -ne 0 ]] && return 1
|
||||||
for f in $FILES; do
|
for f in $FILES; do
|
||||||
# echo sourcing: $f >&2
|
debug sourcing: $f >&2
|
||||||
source "$f"
|
source "$f"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# must be json as a string, depends on jq
|
# must be json as a string, depends on jq
|
||||||
mounted () {
|
mounted () {
|
||||||
[[ ! $1 ]] && echo no mount point to test && return 2
|
|
||||||
mountpoint "$1" &> /dev/null && echo yes || return 1
|
mountpoint "$1" &> /dev/null && echo yes || return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue