ignored archive
refactor docker added languages added/refactor btrbk library added sudoersmaster
parent
ed853fdf99
commit
f4d2fe1c08
|
@ -0,0 +1 @@
|
||||||
|
archive/
|
|
@ -22,6 +22,7 @@ chromium_() {
|
||||||
[[ $1 == -u ]] && exe=/opt/bin/ungoogled-chromium && shift
|
[[ $1 == -u ]] && exe=/opt/bin/ungoogled-chromium && shift
|
||||||
[[ $1 == -v ]] && exe=/opt/vivaldi/vivaldi && shift
|
[[ $1 == -v ]] && exe=/opt/vivaldi/vivaldi && shift
|
||||||
[[ $1 == -c ]] && exe=/usr/bin/chromium && shift
|
[[ $1 == -c ]] && exe=/usr/bin/chromium && shift
|
||||||
|
[[ $1 == -m ]] && exe=/opt/mqttbox/chrome-linux/chrome-wrapper && shift
|
||||||
echo execuatble to be used: $exe
|
echo execuatble to be used: $exe
|
||||||
if [[ ! -f $exe ]]; then
|
if [[ ! -f $exe ]]; then
|
||||||
echo chromium/chrome not installed at $exe
|
echo chromium/chrome not installed at $exe
|
||||||
|
|
|
@ -1,25 +1,35 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
VSCODE_BIN=$(command -v code)
|
|
||||||
VSCODE_BIN=${VSCODE_BIN:-$(command -v codium)}
|
|
||||||
[[ $VSCODE_BIN ]] || {
|
|
||||||
echo "no vscode binary on machine"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
# set default home here
|
|
||||||
# can pass
|
|
||||||
vscode() {
|
vscode() {
|
||||||
#local home=$HOME
|
|
||||||
local home=/opt/vscode
|
CODE_BIN=/opt/vscode/bin/code
|
||||||
home=${VSCODE_HOME:-$home}
|
VSCODIUM_BIN=$(command -v code-oss)
|
||||||
[[ $1 == "-h" ]] && home=$2 && shift 2
|
local home=/opt/vscode;local code=-codium
|
||||||
mkdir -p ${home}/${USER}
|
local exts; local user; local bin=$VSCODIUM_BIN
|
||||||
[[ $? -ne 0 ]] && echo "unable to set vscode home at $home/$USER, aborting" && return 1
|
[[ $1 == "-c" ]] && code=-code && bin=$CODE_BIN && shift 1
|
||||||
exts=${home}/${USER}/extensions
|
if [[ $1 == "-h" ]]; then
|
||||||
user=${home}/${USER}/data
|
home=$2
|
||||||
echo $VSCODE_BIN --user-data-dir=$user --extensions-dir=$exts "$@"
|
shift 2
|
||||||
$VSCODE_BIN --user-data-dir=$user --extensions-dir=$exts "$@"
|
else
|
||||||
|
home=${VSCODE_HOME:-$home}/${USER}$code
|
||||||
|
fi
|
||||||
|
exts=$home/extensions
|
||||||
|
user=$home/data
|
||||||
|
if [[ -x $bin ]]; then
|
||||||
|
if ! mkdir -p ${home} ; then
|
||||||
|
echo "unable to set vscode home at $home, aborting"
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
echo "saving vscode user data and extentions to $home"
|
||||||
|
fi
|
||||||
|
echo $bin --user-data-dir=$user --extensions-dir=$exts "$@"
|
||||||
|
$bin --user-data-dir=$user --extensions-dir=$exts "$@"
|
||||||
|
else
|
||||||
|
echo "can't find binary $bin"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# # if script was executed then call the function
|
# # if script was executed then call the function
|
||||||
(return 0 2>/dev/null) || vscode $@
|
(return 0 2>/dev/null) || vscode $@
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
command -v docker >/dev/null 2>&1 || return
|
|
||||||
|
|
||||||
alias bashly='docker run --rm -it --volume "$PWD:/app" dannyben/bashly'
|
|
||||||
alias bashly-update='docker pull dannyben/bashly:latest'
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
module_load notify
|
|
||||||
_ch=$(command -v _chromium)
|
|
||||||
if [[ $_ch ]]; then
|
|
||||||
ch=$(dirname "$_ch")/chromium
|
|
||||||
## if chromium exits probably an update to so move again
|
|
||||||
msg="new version availabe, run: sudo mv $ch $_ch"
|
|
||||||
[[ -f $ch ]] && llog $msg && notify-send $msg
|
|
||||||
export CHROME_CONFIG_HOME="/opt/chromium"
|
|
||||||
# chmod +x $BASH_SHELL_HOST/all/modules/chromium.sh
|
|
||||||
ln -sf $BASH_SHELL_HOST/all/modules/chromium.sh /opt/bin/chromium
|
|
||||||
llog "chromium sucessfully set up on $HOSTNAME"
|
|
||||||
login_notify "chromium sucessfully set up on $HOSTNAME"
|
|
||||||
else
|
|
||||||
# echo no _chromium
|
|
||||||
ch=$(command -v chromium)
|
|
||||||
if [[ $ch ]];then
|
|
||||||
llog "chromium availabe, need to run this command and log in again"
|
|
||||||
login_notify "chromium availabe but need to run this command and log in again"
|
|
||||||
llog "sudo mv $ch $(dirname $ch)/_chromium"
|
|
||||||
login_notify "sudo mv $ch $(dirname $ch)/_chromium"
|
|
||||||
else
|
|
||||||
llog "Warning: ungoogled chromimum not installed on $HOSTNAME"
|
|
||||||
login_notify "Warning: ungoogled chromimum not installed on $HOSTNAME"
|
|
||||||
fi
|
|
||||||
fi
|
|
|
@ -1,2 +0,0 @@
|
||||||
alias gspa="git subrepo push --all"
|
|
||||||
alias gpom="git pull origin master" # update repo from default remove
|
|
|
@ -1,29 +0,0 @@
|
||||||
sudo rclone.bin
|
|
||||||
chmod 775 rclone.bin
|
|
||||||
touch $INSTALL_DIR/rclone
|
|
||||||
touch $INSTALL_DIR/rclone.conf
|
|
||||||
mkdir $INSTALL_DIR/cache 2> /dev/null || true
|
|
||||||
echo '#!/bin/bash' > $INSTALL_DIR/rclone
|
|
||||||
CMD=$(echo $INSTALL_DIR/rclone.bin \
|
|
||||||
--config=$INSTALL_DIR/rclone.conf \
|
|
||||||
--cache-dir=$INSTALL_DIR/cache \
|
|
||||||
'$@' \
|
|
||||||
)
|
|
||||||
echo "$CMD" >> $INSTALL_DIR/rclone
|
|
||||||
chown :sudo rclone
|
|
||||||
chmod 775 rclone
|
|
||||||
rm $BIN_DIR/rclone
|
|
||||||
ln -s $INSTALL_DIR/rclone $BIN_DIR/rclone
|
|
||||||
echo -e "rclone customized command can be launched from $(command -v rclone) \n $CMD"
|
|
||||||
echo -e "uncustomized rclone can be run from $INSTALL_DIR/rclone.bin"
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
|
|
||||||
#update version variable post install
|
|
||||||
version=`rclone --version 2>>errors | head -n 1`
|
|
||||||
|
|
||||||
printf "\n${last_version} has successfully installed."
|
|
||||||
printf '\nNow run "rclone config" to set up remotes. Check https://rclone.org/docs/ for more details.\n\n'
|
|
||||||
return 0
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# where public keys are stored. default is $HOME/.ssh
|
|
||||||
# export SSH_PUB_KEYS=/data/secure/pubkeys
|
|
||||||
# default user for any ssh
|
|
||||||
export SSH_USER=sysadmin
|
|
|
@ -7,6 +7,10 @@ alias pmi="sudo pacman -S --needed"
|
||||||
alias pmr="sudo pacman -Rs"
|
alias pmr="sudo pacman -Rs"
|
||||||
alias pmua="sudo pacman -Syu"
|
alias pmua="sudo pacman -Syu"
|
||||||
alias pms="pacman -Ss"
|
alias pms="pacman -Ss"
|
||||||
|
alias pml="pacman -Qe"
|
||||||
|
alias pmlg="pacman -Qe | grep"
|
||||||
|
# https://unix.stackexchange.com/a/409903/201387
|
||||||
|
alias pmlf="comm -23 <(pacman -Qqett | sort | uniq) <(pacman -Qqg base-devel | sort | uniq)"
|
||||||
alias pkgst="pacman -Qi"
|
alias pkgst="pacman -Qi"
|
||||||
alias pkgi="pacman -Si"
|
alias pkgi="pacman -Si"
|
||||||
|
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
# apt package manager
|
|
||||||
# TODO only add if apt is package manager
|
|
||||||
alias installa="sudo apt-get install"
|
|
||||||
alias reinstall="sudo apt install --reinstall"
|
|
||||||
# change depending on distro - need to have backports loaded in apt sources
|
|
||||||
# FYI can just load individual binaries from the wiki using deb files say from testing or unstable
|
|
||||||
alias remove="sudo apt-get remove"
|
|
||||||
alias aremove="sudo apt-get autoremove"
|
|
||||||
alias purge="sudo apt-get purge"
|
|
||||||
alias update="sudo apt-get update"
|
|
||||||
alias pkgst="apt policy"
|
|
||||||
alias esources='sudo nano /etc/apt/sources.list.d/'
|
|
||||||
alias ppa='sh -c '\''sudo add-apt-repository ppa:$1/ppa'\'' _'
|
|
|
@ -1,120 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
add_ppa () {
|
|
||||||
|
|
||||||
if [ $EUID != 0 ]; then
|
|
||||||
echo calling with sudo
|
|
||||||
sudo bash -c "$(declare -f add_ppa); add_ppa $*"
|
|
||||||
else
|
|
||||||
|
|
||||||
VERSION=jammy
|
|
||||||
KEYSDIR=/etc/apt/trusted.gpg.d
|
|
||||||
KEYSERVER=keyserver.ubuntu.com
|
|
||||||
|
|
||||||
declare OPTION; declare OPTARG; declare OPTIND
|
|
||||||
while getopts 'v:p:s:k:c:d:oi' OPTION; do
|
|
||||||
echo processing: option:$OPTION argument:$OPTARG index:$OPTIND remaining:${@:$OPTIND}
|
|
||||||
case "$OPTION" in
|
|
||||||
i)
|
|
||||||
INSTALL=true
|
|
||||||
;;
|
|
||||||
v)
|
|
||||||
VERSION=$OPTARG
|
|
||||||
;;
|
|
||||||
p)
|
|
||||||
PACKAGE=$OPTARG
|
|
||||||
;;
|
|
||||||
c)
|
|
||||||
CMD=$OPTARG
|
|
||||||
;;
|
|
||||||
d)
|
|
||||||
KEYSDIR=$OPTARG
|
|
||||||
;;
|
|
||||||
s)
|
|
||||||
KEYSERVER=$OPTARG
|
|
||||||
;;
|
|
||||||
o)
|
|
||||||
# overwrite any exising public key
|
|
||||||
KEYOVERWRITE=true
|
|
||||||
;;
|
|
||||||
*) echo unknown run option -$OPTARG
|
|
||||||
echo "USAGE: add-ppa <options> package/branch (e.g. git-core/ppa)"
|
|
||||||
echo "available options -v <ubnutu version name - default Jammy>; -p <apt install package name if not the same>"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
shift $((OPTIND - 1))
|
|
||||||
|
|
||||||
#check input
|
|
||||||
if [ -z ${1+x} ]; then
|
|
||||||
echo "No ppa provided!"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
LAUNCHPAD="https://ppa.launchpadcontent.net"
|
|
||||||
DEV=$(echo $1 | cut -d ':' -f 2 | cut -d '/' -f1 )
|
|
||||||
PACKAGE=${PACKAGE:-$DEV}
|
|
||||||
CMD=${CMD:-$PACKAGE}
|
|
||||||
BRANCH=${2:-$(echo $1| cut -d '/' -f 2)}
|
|
||||||
URL="$LAUNCHPAD/$DEV/$BRANCH/ubuntu $VERSION main"
|
|
||||||
|
|
||||||
echo "*********** Adding PPA Repository ************"
|
|
||||||
echo DEVELOPER: $DEV
|
|
||||||
echo BRANCH: $BRANCH
|
|
||||||
echo PACKAGE: $PACKAGE
|
|
||||||
echo COMMAND: $CMD
|
|
||||||
echo URL: $URL
|
|
||||||
|
|
||||||
if [[ -t 0 ]]; then
|
|
||||||
read -n 1 -p "do you want to continue [y]=>" REPLY
|
|
||||||
[[ $REPLY != "y" ]] && return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n*********************************************"
|
|
||||||
#create source list file
|
|
||||||
echo "deb $URL" > /etc/apt/sources.list.d/$DEV.list
|
|
||||||
echo "***** added /etc/apt/sources.list.d/$DEV.list with****"
|
|
||||||
cat /etc/apt/sources.list.d/$DEV.list
|
|
||||||
echo "*********************************************"
|
|
||||||
|
|
||||||
KEYFILE=$KEYSDIR/$DEV.gpg
|
|
||||||
|
|
||||||
[[ $KEYOVERWRITE ]] && rm $KEYFILE
|
|
||||||
if [ ! -f $KEYFILE ]; then
|
|
||||||
# using an update error to grab key id
|
|
||||||
KEY_ERROR=/tmp/${DEV}_key_error
|
|
||||||
touch $KEY_ERROR
|
|
||||||
apt-get update > /dev/null 2> $KEY_ERROR
|
|
||||||
cat $KEY_ERROR
|
|
||||||
KEY=$(sed -n 's/^.*NO_PUBKEY //p' "$KEY_ERROR" | head -1)
|
|
||||||
# echo Reposity Public Key Settings
|
|
||||||
# echo KEYS DIRECTORY: $KEYSDIR
|
|
||||||
# echo KEY SERVER: $KEYSERVER
|
|
||||||
# echo KEY: $KEY
|
|
||||||
if [ ! $KEY ]; then
|
|
||||||
echo can not determine $DEV/$BRANCH key sign
|
|
||||||
echo "removing file: /etc/apt/sources.list.d/$DEV.list and aborting"
|
|
||||||
rm /etc/apt/sources.list.d/$DEV.list
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
echo downloading and saving public key $KEY for $DEV/$BRANCH to $KEYFILE
|
|
||||||
gpg --keyserver $KEYSERVER --recv $KEY
|
|
||||||
gpg --export $KEY > $KEYFILE
|
|
||||||
else
|
|
||||||
echo " >>>>>> $KEYFILE already exists, using that key $KEY <<<<<"
|
|
||||||
fi
|
|
||||||
echo ppa repo $DEV/$BRANCH for package $PACKAGE now registered, updating...
|
|
||||||
apt-get update 1> /dev/null
|
|
||||||
if [[ $INSTALL ]]; then
|
|
||||||
echo installing $PACKAGE
|
|
||||||
[[ -t 0 ]] && apt policy $PACKAGE
|
|
||||||
apt-get install $PACKAGE -y
|
|
||||||
$CMD --version
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# # if script was executed then call the function
|
|
||||||
(return 0 2>/dev/null) || add_ppa $@
|
|
|
@ -1,14 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
command -v multipass >/dev/null 2>&1 || return
|
|
||||||
# [[ ! -f /snap/bin/multipass ]] && return
|
|
||||||
|
|
||||||
alias mpls="multipass list"
|
|
||||||
alias mp="multipass"
|
|
||||||
alias mpl="multipass_launch"
|
|
||||||
alias mps="multipass shell"
|
|
||||||
alias mpssh="multipass_ssh"
|
|
||||||
alias mprm="multipass_remove"
|
|
||||||
alias mph="multipass --help"
|
|
||||||
alias mpscr="multipass_ssh_script"
|
|
||||||
alias mprd="sudo snap restart multipass.multipassd"
|
|
|
@ -1,93 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
command -v multipass >/dev/null 2>&1 || return
|
|
||||||
|
|
||||||
multipass_launch () {
|
|
||||||
subdir=${MULTIPASS_HOME:-multipass}
|
|
||||||
[[ $1 ]] && name="-n $1"
|
|
||||||
if [[ $2 ]]; then
|
|
||||||
file="$HOME/$subdir/cloud-init/$2.yaml"
|
|
||||||
if [[ -f $file ]]; then
|
|
||||||
init="--cloud-init $file"
|
|
||||||
else
|
|
||||||
echo no cloud init file $file
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo running: multipass launch $name $init
|
|
||||||
multipass launch $name $init
|
|
||||||
}
|
|
||||||
|
|
||||||
multipass_remove () {
|
|
||||||
[[ ! $1 ]] && echo must supply an instance name && return 1
|
|
||||||
module_load confirm
|
|
||||||
confirm "delete and purge instance $1?" || return 1
|
|
||||||
multipass delete -p $1
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
multipass_get_sshid () {
|
|
||||||
dest=${1:-$HOME/.ssh/multipass_key}
|
|
||||||
[[ -f $dest ]] && echo $dest && return 0
|
|
||||||
src=${SNAP_VAR:-/var/snap}/multipass/common/data/multipassd/ssh-keys/id_rsa
|
|
||||||
[[ ! -f $src ]] && return 1
|
|
||||||
sudo cp $src $dest
|
|
||||||
sudo chown $USER:$USER $dest
|
|
||||||
chmod 600 $dest
|
|
||||||
echo $dest
|
|
||||||
}
|
|
||||||
|
|
||||||
multipass_get_ip () {
|
|
||||||
[[ ! $1 ]] && return 1
|
|
||||||
json=$(multipass info --format json $1 2> /dev/null)
|
|
||||||
[[ ! $json ]] && return 2
|
|
||||||
ip=$(echo "$json" | jq -r .info.$1.ipv4[0] 2> /dev/null)
|
|
||||||
[[ $ip = "null" ]] && return 3
|
|
||||||
[[ $ip ]] && echo $ip || return 4
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
multipass_ssh_options () {
|
|
||||||
id=$(multipass_get_sshid)
|
|
||||||
[[ $? -gt 0 ]] && return 1
|
|
||||||
echo -o IdentitiesOnly=yes -o IdentityFile=$id
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
multipass_ssh_cmd () {
|
|
||||||
[[ ! $1 ]] && { echo must supply name of instance name; return 1; }
|
|
||||||
ip=$(multipass_get_ip $1)
|
|
||||||
[[ ! $ip ]] && { echo "no ip for instance $1"; return 2; }
|
|
||||||
user=${2:-ubuntu}
|
|
||||||
opts=$(multipass_ssh_options)
|
|
||||||
[[ ! $opts ]] && return 3
|
|
||||||
echo $opts $user@$ip
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
multipass_ssh () {
|
|
||||||
cmd=$(multipass_ssh_cmd $@) || { echo failed: $cmd;return $?; }
|
|
||||||
echo ssh $cmd
|
|
||||||
ssh $cmd
|
|
||||||
}
|
|
||||||
|
|
||||||
multipass_scp () {
|
|
||||||
[[ $1 = "-u" ]] && user=$2 && shift 2 || user=ubuntu
|
|
||||||
[[ ! $1 ]] && echo must supply name of instance name && return 1
|
|
||||||
ip=$(multipass_get_ip $1)
|
|
||||||
[[ ! $ip ]] && echo "no ip for instance $1, aborting" && return
|
|
||||||
id=$(multipass_get_sshid)
|
|
||||||
cat $id
|
|
||||||
return
|
|
||||||
echo sudo scp -i $id -r $2 $user@$ip:$3
|
|
||||||
sudo scp -i $id $2 $user@$ip:$3
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
multipass_ssh_script () {
|
|
||||||
cmd=$(multipass_ssh_cmd $2) || { echo failed: $cmd;return $?; }
|
|
||||||
module_load remote
|
|
||||||
remote_script $1 "$cmd"
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
command -v snap >/dev/null 2>&1 || return
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
command -v snap >/dev/null 2>&1 || return
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
command -v snap >/dev/null 2>&1 || return
|
|
||||||
|
|
||||||
path_append /snap/bin
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
command -v docker >/dev/null 2>&1 || return
|
|
||||||
docker_terminal () {
|
|
||||||
docker exec -it $1 /bin/sh
|
|
||||||
}
|
|
|
@ -0,0 +1 @@
|
||||||
|
ln -s $BASH_SHELL_ANY_HOST/docker/docker $BASH_SHELL_HOST/load
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
command -v docker >/dev/null 2>&1 || return
|
||||||
|
docker_terminal () {
|
||||||
|
docker exec -it $1 /bin/sh
|
||||||
|
}
|
||||||
|
|
||||||
|
docker_latest_image() {
|
||||||
|
image=$1
|
||||||
|
major=${2:-1}
|
||||||
|
tokenUri="https://auth.docker.io/token"
|
||||||
|
data=("service=registry.docker.io" "scope=repository:$image:pull")
|
||||||
|
token="$(curl --silent --get --data-urlencode ${data[0]} --data-urlencode ${data[1]} $tokenUri | jq --raw-output '.token')"
|
||||||
|
listUri="https://registry-1.docker.io/v2/$image/tags/list"
|
||||||
|
curl --silent --get -H "Accept: application/json" -H "Authorization: Bearer $token" $listUri \
|
||||||
|
| jq --raw-output ".tags[] | select(. | startswith(\"$major.\"))" | sort -V | sed -n \$p
|
||||||
|
}
|
|
@ -1,39 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
command -v docker >/dev/null 2>&1 || return
|
|
||||||
|
|
||||||
aws_docker () {
|
|
||||||
local cred
|
|
||||||
local profile
|
|
||||||
local profile_env
|
|
||||||
if [[ $1 == "--cred" ]]; then
|
|
||||||
cred=$2
|
|
||||||
shift 2
|
|
||||||
else
|
|
||||||
cred=${HOME}/.aws
|
|
||||||
fi
|
|
||||||
if [[ $1 == "--profile" ]]; then
|
|
||||||
profile=$2
|
|
||||||
shift 2
|
|
||||||
else
|
|
||||||
profile=${AWS_PROFILE}
|
|
||||||
fi
|
|
||||||
[[ ! $(cat $cred/config 2> /dev/null | grep ${profile}]) ]] && echo no profile ${profile} in $cred/config && return
|
|
||||||
[[ $profile ]] && profile_env="--env AWS_PROFILE=${profile}"
|
|
||||||
# echo credentials directory $cred
|
|
||||||
# echo using profile $profile
|
|
||||||
[[ ! -f $cred/credentials ]] && echo no credentails file at $cred/credentails && return
|
|
||||||
|
|
||||||
# echo remaining args: $@
|
|
||||||
docker run --rm -it -v ${cred}:/root/.aws --env AWS_PAGER="" ${profile_env} -v $(pwd):/aws amazon/aws-cli "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
aws_docker-update () {
|
|
||||||
docker pull amazon/aws-cli:latest
|
|
||||||
}
|
|
||||||
|
|
||||||
_alt_=$([[ $(command -v aws >/dev/null 2>&1) ]] || echo d)
|
|
||||||
|
|
||||||
alias aws${_alt_}='aws_docker'
|
|
||||||
alias aws${_alt_}-update='aws_docker_update'
|
|
||||||
|
|
||||||
unset _alt_
|
|
|
@ -1,3 +0,0 @@
|
||||||
if command -v npm >/dev/null 2>&1; then
|
|
||||||
alias gterm="GNOME_TERMINAL_SCREEN='' gnome-terminal"
|
|
||||||
fi
|
|
|
@ -1,3 +0,0 @@
|
||||||
#todo check for ubuntu first, need script from docker build
|
|
||||||
module_load add-ppa
|
|
||||||
add_ppa -i -c backintime -p backintime-qt ppa:bit-team/testing
|
|
|
@ -1,7 +0,0 @@
|
||||||
DIR="$(cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
|
||||||
BIN=${1:-/opt/bin/bmount}
|
|
||||||
ln -s $DIR/bind-mount.sh $BIN
|
|
||||||
sudo chown root:sudo $DIR/bind-mount.sh
|
|
||||||
sudo chmod 771 $DIR/bind-mount.sh
|
|
||||||
echo "%users $HOSTNAME=(ALL) NOPASSWD:SETENV: /bin/bash $BIN" | sudo tee /etc/sudoers.d/bmount
|
|
||||||
sudo chmod 440 /etc/sudoers.d/bmount
|
|
|
@ -1,227 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# shellcheck disable=SC2016
|
|
||||||
# set -e
|
|
||||||
|
|
||||||
# golang_install remove
|
|
||||||
# golang_ install -e m
|
|
||||||
|
|
||||||
function get_platform () {
|
|
||||||
|
|
||||||
local OS
|
|
||||||
local ARCH
|
|
||||||
local PLATFORM
|
|
||||||
|
|
||||||
OS="$(uname -s)"
|
|
||||||
ARCH="$(uname -m)"
|
|
||||||
|
|
||||||
case $OS in
|
|
||||||
"Linux")
|
|
||||||
case $ARCH in
|
|
||||||
"x86_64")
|
|
||||||
ARCH=amd64
|
|
||||||
;;
|
|
||||||
"aarch64")
|
|
||||||
ARCH=arm64
|
|
||||||
;;
|
|
||||||
"armv6")
|
|
||||||
ARCH=armv6l
|
|
||||||
;;
|
|
||||||
"armv8")
|
|
||||||
ARCH=arm64
|
|
||||||
;;
|
|
||||||
.*386.*)
|
|
||||||
ARCH=386
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
PLATFORM="linux-$ARCH"
|
|
||||||
;;
|
|
||||||
"Darwin")
|
|
||||||
PLATFORM="darwin-amd64"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo $PLATFORM
|
|
||||||
}
|
|
||||||
|
|
||||||
golang_install () {
|
|
||||||
|
|
||||||
## START INSTALL
|
|
||||||
PLATFORM=$(get_platform)
|
|
||||||
if [ -z "$PLATFORM" ]; then
|
|
||||||
echo "Your operating system is not supported by this install script."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
module_load block
|
|
||||||
[ ! "$(module_loaded block)" ] && echo unable to load block module, exiting && return 1
|
|
||||||
module_load confirm
|
|
||||||
|
|
||||||
declare ENV_TYPE="u" # Which shell repo for the block
|
|
||||||
declare ENV_FILE # override shell repo location
|
|
||||||
# u=user h=host n=network b=base
|
|
||||||
# by default it is installed in userspace
|
|
||||||
# local versions of these
|
|
||||||
declare goroot
|
|
||||||
declare gopath
|
|
||||||
local force
|
|
||||||
|
|
||||||
declare OPTION
|
|
||||||
declare OPTARG
|
|
||||||
declare OPTIND
|
|
||||||
|
|
||||||
while getopts 're:f:r:p:' OPTION; do
|
|
||||||
# echo $OPTION $OPTARG
|
|
||||||
case "$OPTION" in
|
|
||||||
r)
|
|
||||||
force=true
|
|
||||||
;;
|
|
||||||
f)
|
|
||||||
ENV_FILE=$OPTARG
|
|
||||||
echo explicing setting block to $ENV_FILE
|
|
||||||
;;
|
|
||||||
e)
|
|
||||||
ENV_TYPE=$OPTARG
|
|
||||||
echo
|
|
||||||
;;
|
|
||||||
r)
|
|
||||||
goroot=$OPTARG
|
|
||||||
echo setting root $goroot
|
|
||||||
;;
|
|
||||||
p)
|
|
||||||
gopath=$OPTARG
|
|
||||||
echo setting path $gopath
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo unknown option $OPTION
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
shift $(( OPTIND - 1 ))
|
|
||||||
|
|
||||||
if [[ ! $ENV_FILE ]]; then
|
|
||||||
FILE=lang/go
|
|
||||||
case $ENV_TYPE in
|
|
||||||
# h=host m=machine n=network b=base
|
|
||||||
"h")
|
|
||||||
[[ -d $BASH_SHELL_HOST/$(hostname) ]] && ENV_FILE=$BASH_SHELL_HOST/$(hostname)/$FILE
|
|
||||||
;&
|
|
||||||
"m")
|
|
||||||
[[ -d $BASH_SHELL_HOST/all ]] && ENV_FILE=$BASH_SHELL_HOST/all/$FILE
|
|
||||||
;&
|
|
||||||
"n")
|
|
||||||
([[ -d $BASH_SHELL_NETWORK/$NETWORKNAME ]] && [[ ! $ENV_FILE ]]) && ENV_FILE=$BASH_SHELL_NETWORK/$NETWORKNAME/$FILE
|
|
||||||
;&
|
|
||||||
"b")
|
|
||||||
([[ -d $BASH_SHELL_BASE ]] && [[ ! $ENV_FILE ]]) && ENV_FILE=$BASH_SHELL_BASE/$FILE
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
[[ ! $ENV_FILE ]] && ENV_FILE=$HOME/.bashrc # default is userspace
|
|
||||||
ENV_TYPE="u"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! $goroot ]]; then
|
|
||||||
goroot=$GOROOT
|
|
||||||
if [[ ! $goroot ]]; then
|
|
||||||
[[ $ENV_TYPE = "u" ]] && goroot="$HOME/go" || goroot="/opt/go"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! $gopath ]]; then
|
|
||||||
gopath=$GOPATH
|
|
||||||
if [[ ! $gopath ]]; then
|
|
||||||
[[ $ENV_TYPE = "u" ]] && gopath="$HOME/go/apps" || gopath="/opt/go/apps"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo --- go environment settings are -----
|
|
||||||
echo GOROOT: $goroot
|
|
||||||
echo GOPATH: $gopath
|
|
||||||
echo ---------------------------------------
|
|
||||||
|
|
||||||
goenv=('export GOROOT='"$goroot"'\n'
|
|
||||||
'export PATH=$PATH:'"$goroot"'/bin\n'
|
|
||||||
'export GOPATH='"$gopath"'\n'
|
|
||||||
'export PATH=$PATH:'"$gopath"'/bin')
|
|
||||||
|
|
||||||
echo ==== envionrment block is ====
|
|
||||||
printf "${goenv[*]}\n"
|
|
||||||
echo =========================================
|
|
||||||
echo environment block file is $ENV_FILE
|
|
||||||
confirm Do you want to continue || return 1
|
|
||||||
|
|
||||||
set_block -f $ENV_FILE -n "Go Language Environment"
|
|
||||||
|
|
||||||
if [[ $1 = remove ]]; then
|
|
||||||
confirm Do you really want to remove the go installation? || return 1
|
|
||||||
remove_block
|
|
||||||
confirm Delete directory $gopath??? && rm -rf $gopath
|
|
||||||
confirm Delete directory $goroot??? && rm -rf $goroot
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# the github api doesn't show any release records to had to grab this way
|
|
||||||
VERSION=$(echo "$(wget -qO- https://github.com/golang/go/tags)" | sed -e 's/<[^>]*>//g'| sed '/^\s*$/d'| grep release-branch| awk '{ print $2 }'|grep -v runtime|sort -V|tail -1|cut -c 3-)
|
|
||||||
if [[ $(which go) ]]; then
|
|
||||||
INSTALLED_VERSION=$(echo $(go version)| awk '{print $3}' | cut -c 3-)
|
|
||||||
# INSTALLED_VERSION=1.15.2 # this is for testing, comment out for production
|
|
||||||
echo installed: $INSTALLED_VERSION available: $VERSION
|
|
||||||
if [ "$INSTALLED_VERSION" == "$VERSION" ]; then
|
|
||||||
if [[ ! $force ]]; then
|
|
||||||
echo Installed Version $INSTALLED_VERSION is current nothing to do, exiting
|
|
||||||
echo use -r flag to force reinstall
|
|
||||||
return 2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "$goroot" ]; then
|
|
||||||
echo "The Go install directory ($goroot) already exists. "
|
|
||||||
confirm Do you want to upgrade to $VERSION? || return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo installing version $VERSION ......
|
|
||||||
|
|
||||||
PACKAGE_NAME="go$VERSION.$PLATFORM.tar.gz"
|
|
||||||
TEMP_DIRECTORY=$(mktemp -d)
|
|
||||||
|
|
||||||
echo "Downloading $PACKAGE_NAME ..."
|
|
||||||
if hash wget 2>/dev/null; then
|
|
||||||
wget https://storage.googleapis.com/golang/$PACKAGE_NAME -O "$TEMP_DIRECTORY/go.tar.gz"
|
|
||||||
else
|
|
||||||
curl -o "$TEMP_DIRECTORY/go.tar.gz" https://storage.googleapis.com/golang/$PACKAGE_NAME
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Download failed! Exiting."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Extracting File..."
|
|
||||||
mkdir -p "$goroot"
|
|
||||||
# TODO set correct permissions here if necessary
|
|
||||||
|
|
||||||
sudo tar -C "$goroot" --strip-components=1 -xzf "$TEMP_DIRECTORY/go.tar.gz"
|
|
||||||
|
|
||||||
|
|
||||||
echo done installing go binary and support files
|
|
||||||
rm -rf $TEMP_DIRECTORY
|
|
||||||
echo making go workspace directories
|
|
||||||
|
|
||||||
mkdir -p "${gopath}/"{src,pkg,bin}
|
|
||||||
# TODO set correct permission if all have access
|
|
||||||
|
|
||||||
echo "Configuring GO environment in: $ENV_FILE"
|
|
||||||
|
|
||||||
mkdir -p "$(dirname $ENV_FILE)"
|
|
||||||
touch "$ENV_FILE"
|
|
||||||
add_block
|
|
||||||
block_add_line "${goenv[*]}"
|
|
||||||
# echo ---------contents of $ENV_FILE------------------
|
|
||||||
# cat $ENV_FILE
|
|
||||||
# echo ------------------------------------------------
|
|
||||||
|
|
||||||
echo -e "\nGo $VERSION was installed into $goroot.\n(re)start a new shell environment to take effect"
|
|
||||||
echo NOTE: all files have root:root user:group, run a chown/chmod/setfacl commands if need be
|
|
||||||
return 0
|
|
||||||
}
|
|
|
@ -1,142 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
hugo_install() {
|
|
||||||
# inspried from this forum post https://discourse.gohugo.io/t/script-to-install-latest-hugo-release-on-macos-and-ubuntu/14774/10
|
|
||||||
# if you have run into github api anonymous access limits which happens during debugging/dev then add user and token here or sourced from a separate file
|
|
||||||
# . ~/githubapitoken
|
|
||||||
#GITHUB_USER=""
|
|
||||||
#GITHUB_TOKEN=""
|
|
||||||
|
|
||||||
if [ "$GITHUB_TOKEN" != "" ]; then
|
|
||||||
echo using access token with script
|
|
||||||
echo $GITHUB_USER $GITHUB_TOKEN
|
|
||||||
fi
|
|
||||||
|
|
||||||
EXTENDED=false
|
|
||||||
FORCE=false
|
|
||||||
EFILE=""
|
|
||||||
|
|
||||||
# options
|
|
||||||
# e - download and install the extended version
|
|
||||||
# c - use 'hugoe' as the install command for extended version otherwise 'hugo' will launch extended version
|
|
||||||
# f - force download/overwrite of same version
|
|
||||||
|
|
||||||
declare OPTION
|
|
||||||
declare OPTARG
|
|
||||||
declare OPTIND
|
|
||||||
|
|
||||||
while getopts 'ecf' OPTION; do
|
|
||||||
case "$OPTION" in
|
|
||||||
e)
|
|
||||||
echo "installing extended hugo"
|
|
||||||
EXTENDED=true
|
|
||||||
;;
|
|
||||||
c)
|
|
||||||
if [ $EXTENDED = true ]; then
|
|
||||||
EFILE="e"
|
|
||||||
echo using hugoe for extended command
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
f)
|
|
||||||
echo "FORCING download/overwrite"
|
|
||||||
FORCE=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
shift $((OPTIND - 1))
|
|
||||||
|
|
||||||
DEFAULT_BIN_DIR="/usr/local/bin"
|
|
||||||
# Single optional argument is directory in which to install hugo
|
|
||||||
BIN_DIR=${1:-"$DEFAULT_BIN_DIR"}
|
|
||||||
|
|
||||||
BIN_PATH="$(which hugo$EFILE)"
|
|
||||||
declare -A ARCHES
|
|
||||||
ARCHES=(["arm64"]="ARM64" ["aarch64"]="ARM64" ["x86_64"]="64bit" ["arm32"]="ARM" ["armhf"]="ARM")
|
|
||||||
ARCH=$(arch)
|
|
||||||
|
|
||||||
if [ -z "${ARCHES[$ARCH]}" ]; then
|
|
||||||
echo Your machine kernel architecture $ARCH is not supported by this script, aborting
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
INSTALLED="$(hugo$EFILE version 2>/dev/null | cut -d'v' -f2 | cut -c 1-6)"
|
|
||||||
CUR_VERSION=${INSTALLED:-"None"}
|
|
||||||
# echo $(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep tag_name)
|
|
||||||
# NEW_VERSION="$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest \
|
|
||||||
# | grep tag_name \
|
|
||||||
# | cut -d'v' -f2 | cut -c 1-6)"
|
|
||||||
|
|
||||||
NEW_VERSION=$(lastversion hugo)
|
|
||||||
|
|
||||||
echo "Hugo $([ $EXTENDED == true ] && echo "Extended"): Current Version : $CUR_VERSION => New Version: $NEW_VERSION"
|
|
||||||
|
|
||||||
# if [ -z "$NEW_VERSION" ]; then
|
|
||||||
# echo Unable to retrieve new version number - Likely you have reached github anonymous limit
|
|
||||||
# echo set environment variable $($GITHUB_USER) and $($GITHUB_TOKEN) and try again
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
|
|
||||||
[[ $NEW_VERSION = $CUR_VERSION ]] && [[ $FORCE = false ]] && echo Latest version already installed at $BIN_PATH && return 0
|
|
||||||
|
|
||||||
pushd /tmp/ >/dev/null
|
|
||||||
|
|
||||||
# curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohug#oio/hugo/releases/latest |
|
|
||||||
# grep "browser_download_url.*hugo.*._Linux-${ARCHES[$ARCH]}\.tar\.gz" |
|
|
||||||
|
|
||||||
URL=$(
|
|
||||||
lastversion hugo --format assets --filter Linux-${ARCHES[$ARCH]}\.tar\.gz |
|
|
||||||
if [ $EXTENDED = true ]; then
|
|
||||||
grep "_extended"
|
|
||||||
else
|
|
||||||
grep -v "_extended"
|
|
||||||
fi
|
|
||||||
# |
|
|
||||||
# cut -d ":" -f 2,3 |
|
|
||||||
# tr -d \"
|
|
||||||
)
|
|
||||||
|
|
||||||
echo $URL
|
|
||||||
|
|
||||||
echo "Installing version $NEW_VERSION $([ $EXTENDED == true ] && echo "Extended") "
|
|
||||||
echo "This machine's architecture is $ARCH"
|
|
||||||
echo "Downloading Tarball $URL"
|
|
||||||
|
|
||||||
wget --user=-u $GITHUB_USER --password=$GITHUB_TOKEN -q $URL
|
|
||||||
|
|
||||||
TARBALL=$(basename $URL)
|
|
||||||
# TARBALL="$(find . -name "*Linux-${ARCHES[$ARCH]}.tar.gz" 2>/dev/null)"
|
|
||||||
echo Expanding Tarball, $TARBALL
|
|
||||||
tar -xzf $TARBALL hugo
|
|
||||||
|
|
||||||
chmod +x hugo
|
|
||||||
|
|
||||||
if [ -w $BIN_DIR ]; then
|
|
||||||
echo "Installing hugo to $BIN_DIR"
|
|
||||||
mv hugo -f $BIN_DIR/hugo$EFILE
|
|
||||||
else
|
|
||||||
echo "installing hugo to $BIN_DIR (sudo)"
|
|
||||||
sudo mv -f hugo $BIN_DIR/hugo$EFILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm $TARBALL
|
|
||||||
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
echo Installing hugo $([ $EXTENDED == true ] && echo "extended") as hugo$EFILE
|
|
||||||
|
|
||||||
BIN_PATH="$(which hugo$EFILE)"
|
|
||||||
|
|
||||||
if [ -z "$BIN_PATH" ]; then
|
|
||||||
printf "WARNING: Installed Hugo Binary in $BIN_DIR is not in your environment path\nPATH=$PATH\n"
|
|
||||||
else
|
|
||||||
if [ "$BIN_DIR/hugo$EFILE" != "$BIN_PATH" ]; then
|
|
||||||
echo "WARNING: Just installed Hugo binary hugo$EFILE to, $BIN_DIR , conflicts with existing Hugo in $BIN_PATH"
|
|
||||||
echo "add $BIN_DIR to path and delete $BIN_PATH"
|
|
||||||
else
|
|
||||||
echo "--- Installation Confirmation ---"
|
|
||||||
printf "New Hugo binary version at $BIN_PATH is\n $($BIN_PATH version)\n"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# module to load some remote desktop server
|
|
||||||
|
|
||||||
tigervnc_install () {
|
|
||||||
local usesudo
|
|
||||||
[[ $EUID -ne 0 ]] && usesudo=sudo
|
|
||||||
pass=$1
|
|
||||||
[[ ! $pass ]] && echo password argument required && return 1
|
|
||||||
# TODO check for binary and if not go grab it
|
|
||||||
user=$2
|
|
||||||
[[ $usesudo ]] && user=${user:-$USER} || user=${user:-$(getent passwd 1000 | cut -f 1 -d ":")}
|
|
||||||
echo creating password file with $pass for user $user
|
|
||||||
echo "=========================="
|
|
||||||
mkdir /home/$user/.vnc
|
|
||||||
echo $pass | vncpasswd -f > /home/$user/.vnc/passwd
|
|
||||||
chown -R $user:$user /home/$user/.vnc
|
|
||||||
chmod 0600 /home/$user/.vnc/passwd
|
|
||||||
ls -la /home/$user/.vnc/
|
|
||||||
server=/bin/x0vncserver
|
|
||||||
# server=/bin/vncserver
|
|
||||||
service=/etc/systemd/system/tigervnc.service
|
|
||||||
machine=$(hostname | tr '[:lower:]' '[:upper:]')
|
|
||||||
echo creating systemd service $service
|
|
||||||
cat <<EOF | $usesudo tee $service
|
|
||||||
[Unit]
|
|
||||||
# https://tigervnc.org/doc/x0vncserver.html
|
|
||||||
Description=tigervnc remote desktop server
|
|
||||||
After=multi-user.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
# User=${user}
|
|
||||||
Environment="XAUTHORITY=/var/run/lightdm/root/:0"
|
|
||||||
Environment="HOME=/home/${user}"
|
|
||||||
# Environment="USER=${user}"
|
|
||||||
# -desktop $machine
|
|
||||||
ExecStart=$server -display :0 -rfbauth /home/${user}/.vnc/passwd
|
|
||||||
# -localhost no
|
|
||||||
# Restart=on-failure
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat $service
|
|
||||||
[[ ! $(cat $service 2>/dev/null) ]] && echo unable to create service file && return 2
|
|
||||||
$usesudo systemctl daemon-reload
|
|
||||||
$usesudo systemctl restart tigervnc
|
|
||||||
$usesudo systemctl enable tigervnc
|
|
||||||
$usesudo systemctl status tigervnc
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
ungoogled_install() {
|
|
||||||
module_load confirm
|
|
||||||
module_load helpers
|
|
||||||
|
|
||||||
SDIR=$(adirname ${1:-$(dirname ${BASH_SOURCE[0]})})
|
|
||||||
|
|
||||||
if [[ ! $(which lastversion) ]]; then
|
|
||||||
echo lastversion is not installed
|
|
||||||
echo it is a required dependency for this script
|
|
||||||
echo see https://github.com/dvershinin/lastversion
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
CUR_VERSION=$( /usr/bin/chromium -version | grep -oP '(?<=Chromium )[^ ]*')
|
|
||||||
|
|
||||||
_repo="Eloston/ungoogled-chromium-binaries"
|
|
||||||
|
|
||||||
NEW_VERSION=$(lastversion ${_repo})
|
|
||||||
|
|
||||||
echo "Ungoogled: Current Version : $CUR_VERSION => New Version: $NEW_VERSION"
|
|
||||||
|
|
||||||
[[ $NEW_VERSION = $CUR_VERSION ]] && [[ ! ${1} == "-f" ]] && echo Latest version is already installed
|
|
||||||
|
|
||||||
_temp=/tmp/ungoogled_chromium
|
|
||||||
echo $_temp to download deb and install
|
|
||||||
mkdir -p $_temp || exit &> /dev/null
|
|
||||||
pushd $_temp &> /dev/null || exit
|
|
||||||
|
|
||||||
echo downloading common deb
|
|
||||||
lastversion ${_repo} --format assets --filter common_ -d common.deb
|
|
||||||
lastversion ${_repo} --format assets --filter mium_.+amd64.deb -d chromium.deb
|
|
||||||
echo installing common libraries
|
|
||||||
sudo dpkg -i common.deb
|
|
||||||
echo installing ungoogled-chromium
|
|
||||||
sudo dpkg -i chromium.deb
|
|
||||||
|
|
||||||
echo done installing, removing $_temp
|
|
||||||
rm -r $_temp &> /dev/null || true
|
|
||||||
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
confirm "do you want to install WidevineCDM for digital streaming rights?"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
module_load widevine-install
|
|
||||||
widevine_install
|
|
||||||
fi
|
|
||||||
|
|
||||||
confirm "do you want to install the uci chromium start script in /opt/bin ?"
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
module_load chromium-install
|
|
||||||
chromium_install
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# # if script was executed then call the function
|
|
||||||
(return 0 2>/dev/null) || ungoogled_install $@
|
|
|
@ -1,71 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# -eux
|
|
||||||
function confirm()
|
|
||||||
{
|
|
||||||
echo -n "$@ "
|
|
||||||
read -e answer
|
|
||||||
for response in y Y yes YES Yes Sure sure SURE OK ok Ok
|
|
||||||
do
|
|
||||||
if [ "_$answer" == "_$response" ]
|
|
||||||
then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Any answer other than the list above is considered a "no" answer
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function widevine_install {
|
|
||||||
|
|
||||||
_chrome_ver=$( /usr/bin/chromium -version | grep -oP '(?<=Chromium )[^ ]*')
|
|
||||||
|
|
||||||
_l_target_dir=~/.local/lib/WidevineCdm
|
|
||||||
_target_dir=/usr/lib/chromium/WidevineCdm
|
|
||||||
_sudo="sudo"
|
|
||||||
|
|
||||||
if [[ "${1}" == "-l" ]]; then
|
|
||||||
_sudo=""
|
|
||||||
_target_dir=$_l_target_dir
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "install widevineCDM for chromium version $_chrome_ver"
|
|
||||||
echo "into $_target_dir"
|
|
||||||
|
|
||||||
confirm "confirm (y/n)" || exit
|
|
||||||
|
|
||||||
_temp=/tmp/chromium_widevine
|
|
||||||
echo using $_temp to download deb and extract widevine
|
|
||||||
mkdir -p $_temp || exit &> /dev/null
|
|
||||||
pushd $_temp &> /dev/null || exit
|
|
||||||
|
|
||||||
# Download deb, which has corresponding Widevine version
|
|
||||||
# Support resuming partially downloaded (or skipping re-download) with -c flag
|
|
||||||
if [[ "${1}" == "-u" ]]; then
|
|
||||||
_un="un"
|
|
||||||
fi
|
|
||||||
_url=https://dl.google.com/linux/deb/pool/main/g/google-chrome-${_un}stable/google-chrome-${_un}stable_${_chrome_ver}-1_amd64.deb
|
|
||||||
echo downloading $_url
|
|
||||||
|
|
||||||
wget -c $_url || exit
|
|
||||||
|
|
||||||
# Unpack deb
|
|
||||||
rm -r unpack_deb &> /dev/null || true
|
|
||||||
mkdir -p unpack_deb
|
|
||||||
echo extracting package...
|
|
||||||
dpkg-deb -R google-chrome-stable_${_chrome_ver}-1_amd64.deb unpack_deb || exit
|
|
||||||
echo removing any old WidevineCDM installs at $_target_dir
|
|
||||||
$_sudo rm -r $_target_dir &> /dev/null || true
|
|
||||||
echo moving WidevineCDM to target $_target_dir
|
|
||||||
$_sudo mv unpack_deb/opt/google/chrome/WidevineCdm $_target_dir &> /dev/null || exit
|
|
||||||
[[ $_sudo ]] && $_sudo chown -R root:root $_target_dir
|
|
||||||
echo done, removing $_temp
|
|
||||||
rm -r $_temp &> /dev/null || true
|
|
||||||
popd &> /dev/null
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# if script was executed then call the function
|
|
||||||
(return 0 2>/dev/null) || widevine_install $@
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# https://raw.githubusercontent.com/flathub/com.github.Eloston.UngoogledChromium/master/widevine-install.sh
|
|
||||||
# https://github.com/flathub/com.github.Eloston.UngoogledChromium
|
|
||||||
# Exit on error and forbid unset variables
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# Get latest WideVine Version by getting last line in https://dl.google.com/widevine-cdm/versions.txt
|
|
||||||
_widevine_ver="$(wget -qO- https://dl.google.com/widevine-cdm/versions.txt | tail -n1)"
|
|
||||||
|
|
||||||
# Get the architecture of the current machine
|
|
||||||
ARCH="$(uname -m)"
|
|
||||||
case "$ARCH" in
|
|
||||||
x86_64)
|
|
||||||
WIDEVINE_ARCH="x64"
|
|
||||||
CHROMIUM_ARCH="x64"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "The architecture $ARCH is not supported." >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Download WideVine into a temporary file and use trap to delete it on exit
|
|
||||||
widevine_zip="$(mktemp)"
|
|
||||||
trap 'rm -f "${widevine_zip:?}"' EXIT
|
|
||||||
wget -O "$widevine_zip" "https://dl.google.com/widevine-cdm/${_widevine_ver}-linux-${WIDEVINE_ARCH}.zip"
|
|
||||||
|
|
||||||
# Install WideVine from zip file into UngoogledChromium flatpak
|
|
||||||
_install_prefix="/opt/chromium/$1/WidevineCdm/${_widevine_ver}"
|
|
||||||
unzip -p "$widevine_zip" libwidevinecdm.so | install -Dm644 "/dev/stdin" "${_install_prefix}/_platform_specific/linux_$CHROMIUM_ARCH/libwidevinecdm.so"
|
|
||||||
unzip -p "$widevine_zip" manifest.json | install -m644 "/dev/stdin" "${_install_prefix}/manifest.json"
|
|
||||||
unzip -p "$widevine_zip" LICENSE.txt | install -m644 "/dev/stdin" "${_install_prefix}/LICENSE.txt"
|
|
|
@ -1,6 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
if [[ $(command -v code) ]]; then
|
|
||||||
export VSCODE_HOME="/opt/vscode"
|
|
||||||
chmod +x $BASH_SHELL_HOST/all/modules/vscode.sh
|
|
||||||
ln -sf $BASH_SHELL_HOST/all/modules/vscode.sh /opt/bin/vscode
|
|
||||||
fi
|
|
|
@ -1,12 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
log=$HOME/.session/session.log
|
|
||||||
&>> $log
|
|
||||||
echo $USER $HOME
|
|
||||||
echo "lightdm login setup $(date)"
|
|
||||||
|
|
||||||
# example commands to run when logging in, here binding some other directories for the user
|
|
||||||
#echo "binding chromium browsers to .browsers"
|
|
||||||
#/usr/bin/bindfs --map=sysadmin/$USER:@users/@$USER /opt/chromium/default $HOME/.browsers/default
|
|
||||||
# bind alternate downloads directory
|
|
||||||
#/usr/bin/bindfs --map=sysadmin/$USER:@users/@$USER /data/downloads $HOME/Downloads
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
log=$HOME/.session/session.log
|
|
||||||
&>> $log
|
|
||||||
echo $USER $HOME
|
|
||||||
echo "lightdm logout cleanup $(date)"
|
|
||||||
# example complimentary cleanup here unmounting those mounted in session_login
|
|
||||||
#echo "un mounting chromium browsers from .browsers"
|
|
||||||
#/bin/fusermount -u $HOME/.browsers/default
|
|
||||||
#/bin/fusermount -u $HOME/Downloads
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# run the session login script manually, used for debugging
|
|
||||||
sudo -E HOME=$HOME USER=$USER ./session_login
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# run the session logout script manually, used for debugging
|
|
||||||
sudo -E HOME=$HOME USER=$USER /bin/bash session_logout
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[Seat:*]
|
|
||||||
session-setup-script=/opt/session/lightdm-setup.sh
|
|
||||||
session-cleanup-script=/opt/session/lightdm-cleanup.sh
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
function confirm()
|
|
||||||
{
|
|
||||||
echo -n "$@ "
|
|
||||||
read -e answer
|
|
||||||
for response in y Y yes YES Yes Sure sure SURE OK ok Ok
|
|
||||||
do
|
|
||||||
if [ "_$answer" == "_$response" ]
|
|
||||||
then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Any answer other than the list above is considered a "no" answer
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ -d $HOME/.session ]]; then
|
|
||||||
echo $HOME/.session folder already exists
|
|
||||||
confirm "!overwrite??? (y/n)" || exit
|
|
||||||
/bin/cp -r -f $HOME/.session/ $HOME/.session-saved/
|
|
||||||
echo saved copy first to $HOME/.session-saved
|
|
||||||
fi
|
|
||||||
echo copying .session from $(pwd) to $HOME
|
|
||||||
/bin/cp -r -f .session/ $HOME
|
|
||||||
echo setting execute permissions
|
|
||||||
chmod +x $HOME/.session/*
|
|
|
@ -1,74 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
loginout_install() {
|
|
||||||
module_load confirm
|
|
||||||
module_load helpers
|
|
||||||
|
|
||||||
[[ ! $(systemctl list-units | grep lightdm) ]] && echo lightdm not running on this machine, aborting && return
|
|
||||||
|
|
||||||
SDIR=$(adirname "${BASH_SOURCE[0]}")
|
|
||||||
# echo source directory: $SDIR
|
|
||||||
|
|
||||||
|
|
||||||
pushd $SDIR &> /dev/null || exit
|
|
||||||
[[ ! -d /etc/lightdm/lightdm.conf.d ]] && mkdir -p /etc/lightdm/lightdm.conf.d
|
|
||||||
echo copying 50-setup-cleanup.conf to /etc/lightdm/lightdm.conf.d
|
|
||||||
sudo cp -f 50-setup-cleanup.conf /etc/lightdm/lightdm.conf.d
|
|
||||||
|
|
||||||
if [[ ! -d /opt/session ]]; then
|
|
||||||
if [[ ! $(mkdir -p /opt/session) ]]; then
|
|
||||||
echo unable to make /opt/session with user $USER, elevating to sudo
|
|
||||||
_sudo="sudo"
|
|
||||||
[[ $($_sudo mkdir -p /opt/session) ]] && echo can not make /opt/session, aborting && return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
echo copying lightdm-cleanup.sh and lightdm-setup.sh to /opt/session
|
|
||||||
$_sudo cp -f scripts/* /opt/session
|
|
||||||
echo setting execute permissions
|
|
||||||
$_sudo chmod -R +x /opt/session/*.sh
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
_user=${1:-${USER}}
|
|
||||||
confirm "add a user .session folder for $_user" && add_user_session $1
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function add_user_session {
|
|
||||||
|
|
||||||
module_load confirm
|
|
||||||
module_load helpers
|
|
||||||
|
|
||||||
SDIR=$(adirname "${BASH_SOURCE[0]}")
|
|
||||||
# echo source directory: $SDIR
|
|
||||||
|
|
||||||
pushd $SDIR &> /dev/null || exit
|
|
||||||
|
|
||||||
_user=${1:-${USER}}
|
|
||||||
|
|
||||||
[[ ! $(user_exists $_user) ]] && echo user $_user does not exist, aborting && return
|
|
||||||
_home=$(bash -c "cd ~$(printf %q $_user) && pwd")
|
|
||||||
|
|
||||||
echo making $_home/.session folder for $_user
|
|
||||||
# mkdir $USER/.session
|
|
||||||
|
|
||||||
sudo -H -E -u "$_user" -s /bin/bash cpy.session.sh
|
|
||||||
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
|
|
||||||
# confirm "do you want to install WidevineCDM for digital streaming rights?"
|
|
||||||
# if [ $? -eq 0 ]; then
|
|
||||||
# module_load widevine-install
|
|
||||||
# widevine_install
|
|
||||||
# fi
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# if script was executed then call the function
|
|
||||||
(return 0 2>/dev/null) || loginout_install $@
|
|
|
@ -1,51 +0,0 @@
|
||||||
|
|
||||||
Lightdm (gdm) is the login manager for linux ubuntu and mint (by default)
|
|
||||||
|
|
||||||
If you need setup and cleanup that is ONLY done at lightdm login/logout then
|
|
||||||
one can run a script to setup and cleanup the session by
|
|
||||||
|
|
||||||
running the loginout-install script, requires sudo
|
|
||||||
|
|
||||||
`module_load loginout-install; loginout_install <user>` # default is current user
|
|
||||||
|
|
||||||
after loading common scripts this will ask if you want to add the .session folder for the user
|
|
||||||
|
|
||||||
or if you just need to add a user .session folder afterward
|
|
||||||
|
|
||||||
`module_load loginout-install; add_user_session <user>`
|
|
||||||
|
|
||||||
|
|
||||||
the script does this
|
|
||||||
|
|
||||||
in `/etc/lightdm/lightdm.conf.d` adds a file `50-setup-cleanup.conf`
|
|
||||||
|
|
||||||
```
|
|
||||||
[Seat:*]
|
|
||||||
session-cleanup-script=/opt/scripts/lightdm-cleanup.sh
|
|
||||||
session-setup-script=/opt/scripts/lightdm-setup.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
in /opt/scripts put two files below and make sure they are +x executable
|
|
||||||
|
|
||||||
```
|
|
||||||
#!/bin/bash
|
|
||||||
#lightdm-setup.sh
|
|
||||||
echo "setup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log
|
|
||||||
log=${HOME}/.session.log
|
|
||||||
if [[ -e $HOME/.session_login ]]; then su -c "/bin/bash $HOME/.session_login 1>>${log} 2>>${log} || true" $USER; fi
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
#!/bin/bash
|
|
||||||
#lightdm-cleanup.sh
|
|
||||||
echo "cleanup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log
|
|
||||||
log=${HOME}/.session.log
|
|
||||||
if [[ -e $HOME/.session_logout ]]; then su -c "/bin/bash $HOME/.session_logout 1>>${log} 2>>${log} || true" $USER; fi
|
|
||||||
```
|
|
||||||
|
|
||||||
then in the user home puts
|
|
||||||
`.session_login` and `.session_logout` files both executable
|
|
||||||
in those you can do anything like bindfs and fusermount -u
|
|
||||||
|
|
||||||
make sure you restart lightdm or reboot
|
|
||||||
`sdr lightdm`
|
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
_udir=${HOME}/.session
|
|
||||||
_uscript=${_udir}/session_logout
|
|
||||||
_log=${_udir}/session.log
|
|
||||||
_sdir=$(dirname "${BASH_SOURCE[0]}")
|
|
||||||
echo "${UID:-$(id -u)}:$(whoami) is running CLEANUP script in $_sdir for ${USER} sourcing ${_uscript}::$(date)" >> ${_sdir}/lightdm.log
|
|
||||||
if [[ -e ${_uscript} ]]; then
|
|
||||||
/bin/bash ${_uscript} 1>>${_log} 2>>${_log} || true
|
|
||||||
fi
|
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
_udir=${HOME}/.session
|
|
||||||
_uscript=${_udir}/session_login
|
|
||||||
_log=${_udir}/session.log
|
|
||||||
_sdir=$(dirname "${BASH_SOURCE[0]}")
|
|
||||||
echo "${UID:-$(id -u)}:$(whoami) is running SETUP script in $_sdir for ${USER} sourcing ${_uscript}::$(date)" >> ${_sdir}/lightdm.log
|
|
||||||
if [[ -e ${_uscript} ]]; then
|
|
||||||
/bin/bash ${_uscript} 1>>${_log} 2>>${_log} || true
|
|
||||||
fi
|
|
|
@ -1,7 +0,0 @@
|
||||||
# Install scripts for a new host machine
|
|
||||||
|
|
||||||
each file or folder in this directory can load another asset to a new host machine
|
|
||||||
|
|
||||||
the install_host function can be loaded which will allow easy install of these assets
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
export FNM_DIR="/opt/node-fnm"
|
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/bash
|
||||||
|
if command -v fnm >/dev/null 2>&1; then
|
||||||
|
|
||||||
|
_fnmenv="$(fnm env --fnm-dir $FNM_DIR --use-on-cd)"
|
||||||
|
# echo "$_fnmenv"
|
||||||
|
# echo "---------"
|
||||||
|
eval "$_fnmenv"
|
||||||
|
|
||||||
|
if ! fnm use lts-latest >/dev/null 2>&1; then
|
||||||
|
echo the latest long term support version is not installed so installing
|
||||||
|
fnm install --lts
|
||||||
|
fvm use lts-lastest
|
||||||
|
echo current active version $(node --version)
|
||||||
|
fi
|
||||||
|
|
||||||
|
alias fnml="fnm use lts-latest"
|
||||||
|
# alias nvmil="nvm install --lts --latest-npm"
|
||||||
|
alias fnmu="fnm use"
|
||||||
|
alias fnmls="fnm ls"
|
||||||
|
alias fnmc="fnm current"
|
||||||
|
# echo added fnm to shell, $NVM_DIR
|
||||||
|
else
|
||||||
|
echo FATAL! fnm is not installed or in the path cannot add node via fnm to shell
|
||||||
|
fi
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
if command -v fnm >/dev/null 2>&1; then
|
||||||
|
mkdir -p $BASH_SHELL_HOST/load/coding
|
||||||
|
ln -s $BASH_SHELL_ANY_HOST/lang/fnm $BASH_SHELL_HOST/load/coding/00-fnm
|
||||||
|
ln -s -f $BASH_SHELL_ANY_HOST/lang/node $BASH_SHELL_HOST/load/coding/node
|
||||||
|
else
|
||||||
|
echo fnm has not been installed on this machine or is not in the path
|
||||||
|
echo do so and try again
|
||||||
|
fi
|
|
@ -0,0 +1,2 @@
|
||||||
|
rm -r $BASH_SHELL_HOST/load/coding/00-fnm
|
||||||
|
rm -r $BASH_SHELL_HOST/load/coding/node
|
|
@ -1,11 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
go_install () {
|
go_install () {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local latest_url="https://go.dev/VERSION?m=text"
|
local latest_url="https://go.dev/VERSION?m=text"
|
||||||
|
|
||||||
## START INSTALL
|
## START INSTALL
|
||||||
|
@ -24,9 +19,12 @@ declare OPTION
|
||||||
declare OPTARG
|
declare OPTARG
|
||||||
declare OPTIND
|
declare OPTIND
|
||||||
|
|
||||||
while getopts 'fr:' OPTION; do
|
while getopts 'fv:r:' OPTION; do
|
||||||
# echo $OPTION $OPTARG
|
# echo $OPTION $OPTARG
|
||||||
case "$OPTION" in
|
case "$OPTION" in
|
||||||
|
v)
|
||||||
|
VERSION=$OPTARG
|
||||||
|
;;
|
||||||
f)
|
f)
|
||||||
force=true
|
force=true
|
||||||
;;
|
;;
|
||||||
|
@ -65,7 +63,7 @@ echo go install and environment will be
|
||||||
printf "${goenv[*]}\n"
|
printf "${goenv[*]}\n"
|
||||||
confirm Do you want to continue || return 1
|
confirm Do you want to continue || return 1
|
||||||
|
|
||||||
VERSION=$(curl -s $latest_url | sed 's/^go//')
|
VERSION=${VERSION:-$(curl -s $latest_url | sed 's/^go//')}
|
||||||
if [[ $(which go) ]]; then
|
if [[ $(which go) ]]; then
|
||||||
INSTALLED_VERSION=$(echo $(go version)| awk '{print $3}' | cut -c 3-)
|
INSTALLED_VERSION=$(echo $(go version)| awk '{print $3}' | cut -c 3-)
|
||||||
# INSTALLED_VERSION=1.15.2 # this is for testing upgrade, comment out for production
|
# INSTALLED_VERSION=1.15.2 # this is for testing upgrade, comment out for production
|
||||||
|
@ -77,7 +75,7 @@ if [[ $(which go) ]]; then
|
||||||
return 2
|
return 2
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
confirm Do you want to upgrade || return 1
|
confirm Do you want to install || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo installing version $VERSION ......
|
echo installing version $VERSION ......
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
if command -v node >/dev/null 2>&1; then
|
||||||
|
|
||||||
if command -v npm >/dev/null 2>&1; then
|
alias ndv="node --version"
|
||||||
|
alias ndw="command -v node"
|
||||||
|
|
||||||
path_append ./node_modules/.bin
|
fi
|
||||||
# load in any node functions
|
|
||||||
module_load node
|
|
||||||
|
|
||||||
fi
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
module_load confirm
|
module_load confirm
|
||||||
|
|
||||||
rm_node_modules () {
|
rm_node_modules () {
|
|
@ -1,5 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# echo loading npm aliasg
|
||||||
|
# command -v npm
|
||||||
if command -v npm >/dev/null 2>&1; then
|
if command -v npm >/dev/null 2>&1; then
|
||||||
# echo addding node langauge stuff
|
# echo addding node langauge stuff
|
||||||
# gives access to packages with bin in a project
|
# gives access to packages with bin in a project
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
this gets loaded via one of the version managers (nvm,fnm,proto)
|
|
@ -0,0 +1,2 @@
|
||||||
|
export NVM_DIR="/opt/node-nvm"
|
||||||
|
export NVM_SCRIPTS_DIR="/usr/share/nvm"
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash
|
||||||
|
echo adding nvm to shell
|
||||||
|
if [[ -f $NVM_SCRIPTS_DIR/init-nvm.sh ]]; then
|
||||||
|
mkdir -p $NVM_DIR
|
||||||
|
source $NVM_SCRIPTS_DIR/init-nvm.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v nvm >/dev/null 2>&1; then
|
||||||
|
# echo node version manager installed $NVM_DIR
|
||||||
|
if ! nvm use --lts >/dev/null 2>&1; then
|
||||||
|
echo a long term support version is not installed so installing $(nvm version-remote --lts)
|
||||||
|
nvm install --lts --latest-npm
|
||||||
|
nvm use --lts
|
||||||
|
echo current active version $(node --version)
|
||||||
|
fi
|
||||||
|
|
||||||
|
alias nvml="nvm use --lts"
|
||||||
|
alias nvmil="nvm install --lts --latest-npm"
|
||||||
|
alias nvmu="nvm use"
|
||||||
|
alias nvmls="nvm ls"
|
||||||
|
|
||||||
|
fi
|
|
@ -0,0 +1,3 @@
|
||||||
|
mkdir -p $BASH_SHELL_HOST/load/coding
|
||||||
|
ln -s $BASH_SHELL_ANY_HOST/lang/nvm $BASH_SHELL_HOST/load/coding/00-nvm
|
||||||
|
ln -s -f $BASH_SHELL_ANY_HOST/lang/node $BASH_SHELL_HOST/load/coding/node
|
|
@ -0,0 +1,2 @@
|
||||||
|
rm -r $BASH_SHELL_HOST/load/coding/00-nvm
|
||||||
|
rm -r $BASH_SHELL_HOST/load/coding/node
|
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/bash
|
||||||
|
if command -v proto >/dev/null 2>&1; then
|
||||||
|
export PROTO_HOME=/opt/coding
|
||||||
|
mkdir -p $PROTO_HOME/shims
|
||||||
|
mkdir -p $PROTO_HOME/bin
|
||||||
|
module_load system-path
|
||||||
|
path_append "$PROTO_HOME/shims"
|
||||||
|
path_append "$PROTO_HOME/bin"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
mkdir -p $BASH_SHELL_HOST/load/coding
|
||||||
|
ln -s $BASH_SHELL_ANY_HOST/lang/proto $BASH_SHELL_HOST/load/coding/00-proto
|
||||||
|
ln -s $BASH_SHELL_ANY_HOST/lang/node $BASH_SHELL_HOST/load/coding/node
|
|
@ -0,0 +1,2 @@
|
||||||
|
rm -r $BASH_SHELL_HOST/load/coding/00-proto
|
||||||
|
rm -r $BASH_SHELL_HOST/load/coding/node
|
|
@ -1,45 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function bumount {
|
|
||||||
echo "removing bind mount at $1"
|
|
||||||
notify-send "removing bind mount at ${1}" --icon=dialog-information -t 2000
|
|
||||||
fusermount -u "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
function bmount {
|
|
||||||
if [ "$1" == "-d" ]; then
|
|
||||||
bumount $2
|
|
||||||
else
|
|
||||||
# if [[ " ${array[@]} " =~ " ${value} " ]]; then
|
|
||||||
# # whatever you want to do when array contains value
|
|
||||||
# fi
|
|
||||||
# mp="${@: -2}"
|
|
||||||
echo mounting $@
|
|
||||||
bindfs $@
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# must have fuser and bindfs installed
|
|
||||||
# for use by sudoers
|
|
||||||
# ln -s $BASH_SHELL_HOST/all/modules/bind-mount/bind-mount.sh /opt/bin/bmount
|
|
||||||
# function xxbmount () {
|
|
||||||
# if [ "$1" == "-mp" ]; then
|
|
||||||
# MOUNTED=$(mountpoint "$2" | grep not)
|
|
||||||
# if [ -z "$MOUNTED" ]; then
|
|
||||||
# echo $2 is a mount point so bind mounting $2/$3 to $4
|
|
||||||
# notify-send "bind mounting ${2}/${3} to ${4}" --icon=dialog-information -t 2000
|
|
||||||
# bindfs "$2/$3" "$4"
|
|
||||||
# else
|
|
||||||
# notify-send "${2} not a mount point - Unable to bind mount ${2}/${3} to ${4}" --icon=dialog-error -t 2000
|
|
||||||
# fi
|
|
||||||
# else
|
|
||||||
# echo bind mounting $1 to $2
|
|
||||||
# notify-send "bind mounting ${1} to ${2}" --icon=dialog-information -t 2000
|
|
||||||
# bindfs "$1" "$2"
|
|
||||||
# fi
|
|
||||||
# }
|
|
||||||
|
|
||||||
# if script was executed then call the function
|
|
||||||
(return 0 2>/dev/null) || bmount $@
|
|
|
@ -1,99 +1,101 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
# echo loading bindfs
|
||||||
#bmount () {}
|
export BFS_MOUNT_DIR=${BFS_MOUNT_DIR:-/mnt/bfs}
|
||||||
# sudo bindfs -o allow_other -o map=root/1001:@root/@1001 /var/lib/docker/volumes /data/dvols
|
|
||||||
|
|
||||||
|
|
||||||
if [ -v PS1 ]; then
|
if [ -v PS1 ]; then
|
||||||
alias drbu="dir_rebind_user"
|
alias rbfsu="dir_rebind_user"
|
||||||
alias dbu="dir_bind_user"
|
alias rbfs="dir_rebind"
|
||||||
alias dbum="dir_bind_unmount"
|
alias bfsu="dir_bind_user"
|
||||||
|
alias bfs="dir_bind"
|
||||||
|
alias bfsum="dir_bind_unmount"
|
||||||
|
alias bfse="bfs_vscode"
|
||||||
|
|
||||||
|
sudo mkdir $BFS_MOUNT_DIR 2> /dev/null
|
||||||
|
sudo chown $USER:$USER $BFS_MOUNT_DIR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dir_rebind_user () {
|
mounted () {
|
||||||
local usesudo; local dir;local user;local group
|
mountpoint "$1" &> /dev/null && echo yes || return 1
|
||||||
# $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_bind_unmount () {
|
dir_bind_unmount () {
|
||||||
local usersudo
|
local usesudo
|
||||||
|
local mp=$1
|
||||||
|
[[ ! $(mounted $mp) ]] && echo no mountpoint at $mp && mp=$BFS_MOUNT_DIR/$(basename $mp)
|
||||||
|
[[ ! $(mounted $mp) ]] && echo no mountpoint at $mp either, aborting && return 1
|
||||||
[[ $EUID -ne 0 ]] && usesudo=sudo
|
[[ $EUID -ne 0 ]] && usesudo=sudo
|
||||||
$usesudo fusermount -u $1
|
if $usesudo fusermount -u $mp; then
|
||||||
|
echo unmounted $mp, removing empty mountpoint directory
|
||||||
|
rm -rf $mp
|
||||||
|
else
|
||||||
|
echo error, unable to unmount $mp
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
dir_bind_user () {
|
dir_bind_user () {
|
||||||
local usesudo; local dir;local user;local group;local mp
|
local usesudo; local dir;local user;local group;local mp
|
||||||
|
|
||||||
[ $# -lt 3 ] && echo minimum 3 args needed to rebind are user, source directory and mountpoint && return 1
|
if [ $# -lt 3 ]; then
|
||||||
|
echo "minimum 3 args needed to rebind <user? <source dir> <mountpoint>"
|
||||||
|
echo passed were $@
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
[[ $EUID -ne 0 ]] && usesudo=sudo
|
[[ $EUID -ne 0 ]] && usesudo=sudo
|
||||||
|
|
||||||
[[ $(id -u $1 2> /dev/null) ]] || { echo user $1 does not exist can not continue; return 2; }
|
[[ $(id -u $1 2> /dev/null) ]] || { echo user $1 does not exist can not continue; return 2; }
|
||||||
|
|
||||||
dir=$(realpath $2)
|
dir=$(realpath $2)
|
||||||
mp=$3
|
mp=$3
|
||||||
|
[[ $(mounted $mp) ]] && echo something already mounted at $mp, aborting && return 1
|
||||||
if ! $usesudo mkdir -p $mp; then echo unable to make mountpoint aborting; return 2; fi
|
if ! $usesudo mkdir -p $mp; then echo unable to make mountpoint aborting; return 2; fi
|
||||||
$usesudo chown $1:$1 $mp
|
$usesudo chown $1:$1 $mp
|
||||||
user=$(stat -c '%U' $dir)
|
user=$(stat -c '%u' $dir)
|
||||||
group=$(stat -c '%G' $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 $mp
|
$usesudo bindfs --force-user=$1 --force-group=$1 --create-for-user=$user --create-for-group=$group --chown-ignore --chgrp-ignore $dir $mp
|
||||||
# echo use \'dir_rebind_user_remove $dir\' to remove
|
[[ $? -gt 0 ]] && echo error in call to bindfs
|
||||||
|
|
||||||
|
if [[ $(mounted $mp) ]]; then
|
||||||
|
echo $dir has been mounted at $mp for user $1
|
||||||
|
echo "to unmount use: dir_bind_unmount $mp or bfsum $mp"
|
||||||
|
else
|
||||||
|
echo unable to mount $dir at $mp as user $user
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
dir_bind () {
|
||||||
|
mp=${2:-$BFS_MOUNT_DIR/$(basename $1)}
|
||||||
|
dir_bind_user $USER $1 $mp
|
||||||
|
if [ -v PS1 ]; then
|
||||||
|
echo enter \"u\" when you ready to unmount, otherwise any other key will leave mounted
|
||||||
|
read -n1 ans
|
||||||
|
echo -e "\n"
|
||||||
|
[[ $ans == "u" ]] && dir_bind_unmount $mp
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# module_load bindfs && dir_bind_user david /mnt/datadrive/@images /data/images
|
dir_rebind () {
|
||||||
|
dir_bind_user $USER $1 $1
|
||||||
|
}
|
||||||
|
|
||||||
|
dir_rebind_user () {
|
||||||
|
dir_bind_user $1 $2 $2
|
||||||
|
}
|
||||||
|
|
||||||
|
bfs_vscode () {
|
||||||
|
mp=${2:-$BFS_MOUNT_DIR/$(basename $1)}
|
||||||
|
dir_bind_user $USER $1 $mp
|
||||||
|
/opt/bin/vscode $mp
|
||||||
|
if [ -v PS1 ]; then
|
||||||
|
echo when you ready to unmount FIRST close your vscode window then enter \"u\"
|
||||||
|
echo otherwise any other key will leave mounted
|
||||||
|
read -n1 ans
|
||||||
|
echo -e "\n"
|
||||||
|
[[ $ans == "u" ]] && dir_bind_unmount $mp
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
(return 0 2>/dev/null) || dir_bind_user $@
|
(return 0 2>/dev/null) || dir_bind_user $@
|
||||||
|
|
||||||
|
|
||||||
# function bumount {
|
|
||||||
# echo "removing bind mount at $1"
|
|
||||||
# notify-send "removing bind mount at ${1}" --icon=dialog-information -t 2000
|
|
||||||
# fusermount -u "$1"
|
|
||||||
# }
|
|
||||||
|
|
||||||
# function bmount {
|
|
||||||
# if [ "$1" == "-d" ]; then
|
|
||||||
# bumount $2
|
|
||||||
# else
|
|
||||||
# if [[ " ${array[@]} " =~ " ${value} " ]]; then
|
|
||||||
# # whatever you want to do when array contains value
|
|
||||||
# fi
|
|
||||||
# mp="${@: -2}"
|
|
||||||
# echo mounting $@
|
|
||||||
# bindfs $@
|
|
||||||
# fi
|
|
||||||
# }
|
|
||||||
|
|
||||||
# must have fuser and bindfs installed
|
|
||||||
# for use by sudoers
|
|
||||||
# ln -s $BASH_SHELL_HOST/all/modules/bind-mount/bind-mount.sh /opt/bin/bmount
|
|
||||||
# function xxbmount () {
|
|
||||||
# if [ "$1" == "-mp" ]; then
|
|
||||||
# MOUNTED=$(mountpoint "$2" | grep not)
|
|
||||||
# if [ -z "$MOUNTED" ]; then
|
|
||||||
# echo $2 is a mount point so bind mounting $2/$3 to $4
|
|
||||||
# notify-send "bind mounting ${2}/${3} to ${4}" --icon=dialog-information -t 2000
|
|
||||||
# bindfs "$2/$3" "$4"
|
|
||||||
# else
|
|
||||||
# notify-send "${2} not a mount point - Unable to bind mount ${2}/${3} to ${4}" --icon=dialog-error -t 2000
|
|
||||||
# fi
|
|
||||||
# else
|
|
||||||
# echo bind mounting $1 to $2
|
|
||||||
# notify-send "bind mounting ${1} to ${2}" --icon=dialog-information -t 2000
|
|
||||||
# bindfs "$1" "$2"
|
|
||||||
# fi
|
|
||||||
# }
|
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,12 @@ btrbk_conf () {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
btrbk_clean () {
|
||||||
|
local file=$(btrbk_conf $1)
|
||||||
|
[[ ! $file ]] && return 1
|
||||||
|
sudo btrbk -c $file clean $2
|
||||||
|
}
|
||||||
|
|
||||||
btrbk_src () {
|
btrbk_src () {
|
||||||
local file=$(btrbk_conf $1)
|
local file=$(btrbk_conf $1)
|
||||||
[[ ! $file ]] && return 1
|
[[ ! $file ]] && return 1
|
||||||
|
@ -86,17 +92,19 @@ local snaps=$(sudo btrbk -c $file list source --format col:h:snapshot_name)
|
||||||
local dests=$(sudo btrbk -c $file list config --format col:h:snapshot_path | tail -1)
|
local dests=$(sudo btrbk -c $file list config --format col:h:snapshot_path | tail -1)
|
||||||
local dests+=" $(btrbk -c $file list target --format col:h:target_path)"
|
local dests+=" $(btrbk -c $file list target --format col:h:target_path)"
|
||||||
|
|
||||||
|
# todo distinguish local from remote destinations and deal with differently for latest link
|
||||||
|
|
||||||
# any pre snap tasks
|
# any pre snap tasks
|
||||||
for dest in $dests; do
|
# for dest in $dests; do
|
||||||
if [[ ! -d $dest ]]; then
|
# if [[ ! -d $dest ]]; then
|
||||||
if confirm directory $dest does not exist, create; then
|
# if confirm directory $dest does not exist, create; then
|
||||||
sudo mkdir -p $dest
|
# sudo mkdir -p $dest
|
||||||
else
|
# else
|
||||||
echo destination $dest directory MUST exist aborting brtbk run
|
# echo destination $dest directory MUST exist aborting brtbk run
|
||||||
return 2
|
# return 2
|
||||||
fi
|
# fi
|
||||||
fi
|
# fi
|
||||||
done
|
# done
|
||||||
|
|
||||||
echo using configuration file: $file
|
echo using configuration file: $file
|
||||||
echo creating snapshots: $snaps
|
echo creating snapshots: $snaps
|
||||||
|
|
|
@ -4,34 +4,31 @@ arch () {
|
||||||
uname -m
|
uname -m
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_chip_type() {
|
get_arch () {
|
||||||
|
local arch
|
||||||
|
arch=$(uname -m)
|
||||||
|
[[ ! $arch ]] && return 1
|
||||||
|
case $arch in
|
||||||
|
x86_64) binArch='amd64' ;;
|
||||||
|
armhf) binArch='armv6' ;;
|
||||||
|
armv7) binArch='armv7' ;;
|
||||||
|
aarch64) binArch='arm64' ;;
|
||||||
|
ppc64el|ppc64le) binArch='ppc64le' ;;
|
||||||
|
s390x) binArch='s390x' ;;
|
||||||
|
.*386.*) binArch='amd32' ;;
|
||||||
|
*) return 2 ;;\
|
||||||
|
esac;
|
||||||
|
echo $binArch
|
||||||
|
}
|
||||||
|
|
||||||
local ARCH
|
function get_os () {
|
||||||
|
declare -l os
|
||||||
case $(arch) in
|
os=$(uname -s)
|
||||||
"x86_64")
|
echo $os
|
||||||
ARCH=amd64
|
|
||||||
;;
|
|
||||||
"aarch64")
|
|
||||||
ARCH=arm64
|
|
||||||
;;
|
|
||||||
"armv8")
|
|
||||||
ARCH=arm64
|
|
||||||
;;
|
|
||||||
.*386.*)
|
|
||||||
ARCH=amd32
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ARCH=arm32
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo $ARCH
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_platform() {
|
function get_platform() {
|
||||||
|
echo $(get_os)-$(get_chip_type)
|
||||||
echo $(uname -s)-$(get_chip_type)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,3 +72,22 @@ get_distro() {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# function get_distro() {
|
||||||
|
# /bin/cp /etc/os-release /tmp/os-release.tmp
|
||||||
|
# if [[ $1 == "-d" ]]; then
|
||||||
|
# shift 1
|
||||||
|
# # docker run -it --name get_container_os --rm --entrypoint cat $1 /etc/os-release
|
||||||
|
# docker create --name dummy $1 > /dev/null
|
||||||
|
# docker cp -L dummy:/etc/os-release /tmp/os-release.tmp
|
||||||
|
# docker rm -f dummy > /dev/null
|
||||||
|
# # docker run -it --name get_container_os --rm --entrypoint cat $1 /etc/os-release > /tmp/container-os.tmp 2> /dev/null
|
||||||
|
# shift 1
|
||||||
|
# fi
|
||||||
|
# source /tmp/os-release.tmp
|
||||||
|
# declare valid=${@:-"alpine debian ubuntu"}
|
||||||
|
# # echo $ID $ID_LIKE
|
||||||
|
# [[ "${valid}" =~ $ID ]] && echo $ID && return 0
|
||||||
|
# [[ "${valid}" =~ $ID_LIKE ]] && echo $ID_LIKE && return 0
|
||||||
|
# return 1
|
||||||
|
# }
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
%sudo, %wheel ALL=(ALL) NOPASSWD:/bin/ln
|
|
@ -0,0 +1 @@
|
||||||
|
%sudo, %wheel ALL=(ALL) NOPASSWD:/bin/passwd
|
Loading…
Reference in New Issue