parent
96127ca89f
commit
bcba8bbfd4
|
@ -1,7 +1,7 @@
|
|||
function
|
||||
functions
|
||||
function
|
||||
alias
|
||||
env
|
||||
misc
|
||||
lang
|
||||
app
|
||||
tools
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
*/archive/*
|
||||
*archive*
|
||||
/ssh/config/_config
|
||||
|
|
4
TODO.md
4
TODO.md
|
@ -1,4 +0,0 @@
|
|||
# TODOS
|
||||
|
||||
add ability to disable loading shell repos
|
||||
add ability to disable alias in non-interactive and interactive shells
|
|
@ -1,3 +0,0 @@
|
|||
alias ports="netstat -tulpn"
|
||||
alias flushdns="systemctl restart systemd-resolved"
|
||||
alias essh="sudo editor /etc/ssh/sshd_config"
|
|
@ -1,18 +0,0 @@
|
|||
#!/bin/bash
|
||||
# if [[ $(groups | grep sudo ) ]]; then
|
||||
# path_insert /sbin after /usr/bin
|
||||
# pathg bin
|
||||
# path_insert /usr/sbin after :/sbin
|
||||
# pathg bin
|
||||
# path_insert /usr/local/sbin after /usr/sbin
|
||||
# pathg sbin
|
||||
# fi
|
||||
|
||||
if [[ $(groups | grep sudo ) ]]; then
|
||||
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
||||
fi
|
||||
|
||||
# with prependthese take prescendence over stuff ones in /usr and /bin
|
||||
path_prepend /opt/bin
|
||||
path_prepend "$HOME/bin"
|
||||
path_prepend "$HOME/.local/bin"
|
|
@ -0,0 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
# if sudo user then give access to these paths
|
||||
if [[ $(groups | grep sudo ) ]]; then
|
||||
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
||||
fi
|
||||
|
||||
# prepend these take prescendence over stuff ones in /usr and /bin
|
||||
# requires system-path module loaded
|
||||
path_prepend /opt/bin
|
||||
path_prepend "$HOME/bin"
|
||||
path_prepend "$HOME/.local/bin"
|
|
@ -1,5 +0,0 @@
|
|||
# used by aliases that need an editor
|
||||
# export EDITOR=atom
|
||||
# export ELECTRON_TRASH=gio
|
||||
export EDITOR=nano
|
||||
export BROWSER=google-chrome
|
|
@ -0,0 +1,2 @@
|
|||
module_load fancy-prompt
|
||||
fancy_prompt
|
|
@ -1,17 +0,0 @@
|
|||
# set PATH so it includes user's private bin if it exists
|
||||
if [ -d "$HOME/bin" ] ; then
|
||||
PATH="$HOME/bin:$PATH"
|
||||
fi
|
||||
|
||||
# set PATH so it includes user's private bin if it exists
|
||||
if [ -d "$HOME/.local/bin" ] ; then
|
||||
PATH="$HOME/.local/bin:$PATH"
|
||||
fi
|
||||
|
||||
# if running bash
|
||||
if [ -n "$BASH_VERSION" ]; then
|
||||
# include .bashrc if it exists
|
||||
if [ -f "$HOME/.bashrc" ]; then
|
||||
. "$HOME/.bashrc"
|
||||
fi
|
||||
fi
|
|
@ -1,22 +1,2 @@
|
|||
#!/bin/bash
|
||||
export TERM=xterm-color
|
||||
export CLICOLOR=1
|
||||
export LSCOLORS=ExFxCxDxBxegedabagacad
|
||||
# !/bin/bash
|
||||
|
||||
export COLOR_NC='\e[0m' # No Color
|
||||
export COLOR_BLACK='\e[0;30m'
|
||||
export COLOR_GRAY='\e[1;30m'
|
||||
export COLOR_RED='\e[0;31m'
|
||||
export COLOR_LIGHT_RED='\e[1;31m'
|
||||
export COLOR_GREEN='\e[0;32m'
|
||||
export COLOR_LIGHT_GREEN='\e[1;32m'
|
||||
export COLOR_BROWN='\e[0;33m'
|
||||
export COLOR_YELLOW='\e[1;33m'
|
||||
export COLOR_BLUE='\e[0;34m'
|
||||
export COLOR_LIGHT_BLUE='\e[1;34m'
|
||||
export COLOR_PURPLE='\e[0;35m'
|
||||
export COLOR_LIGHT_PURPLE='\e[1;35m'
|
||||
export COLOR_CYAN='\e[0;36m'
|
||||
export COLOR_LIGHT_CYAN='\e[1;36m'
|
||||
export COLOR_LIGHT_GRAY='\e[0;37m'
|
||||
export COLOR_WHITE='\e[1;37m'
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
module_load acl
|
|
@ -1,46 +0,0 @@
|
|||
#!/bin/bash
|
||||
# aws cli from docker image on any machine
|
||||
function aws() {
|
||||
AWS_CLI_IMAGE=${AWS_CLI_IMAGE:-amazon/aws-cli:latest}
|
||||
AWS_WORKING_DIR=${AWS_WORKING_DIR:-$HOME/awscli}
|
||||
local cmd
|
||||
cmd="docker run --rm -ti
|
||||
--env AWS_ACCESS_KEY_ID
|
||||
--env AWS_CONFIG_FILE
|
||||
--env AWS_SHARED_CREDENTIALS_FILE
|
||||
--env AWS_SECRET_ACCESS_KEY
|
||||
--env AWS_DEFAULT_REGION
|
||||
-v ${HOME}/.aws:/root/.aws
|
||||
-v ${AWS_WORKING_DIR}:/aws
|
||||
${AWS_CLI_IMAGE} $*
|
||||
--no-cli-pager
|
||||
"
|
||||
# echo ${cmd}
|
||||
# local res
|
||||
echo "$(eval ${cmd})"
|
||||
# echo $RES
|
||||
|
||||
}
|
||||
|
||||
# `! [ -z $AWS_ACCESS_KEY_ID ] && echo "--env AWS_ACCESS_KEY_ID"` \
|
||||
# `! [ -z $AWS_SECRET_ACCESS_KEY ] && echo "--env AWS_SECRET_ACCESS_KEY"` \
|
||||
# `! [ -z $AWS_DEFAULT_REGION ] && echo "--env AWS_DEFAULT_REGION"` \
|
||||
|
||||
test () {
|
||||
|
||||
echo $(aws route53 list-hosted-zones)
|
||||
|
||||
}
|
||||
|
||||
aws-get-zone-id () {
|
||||
local records
|
||||
local domain
|
||||
domain=$(get-domain $1)
|
||||
echo $domain
|
||||
aws route53 list-hosted-zones --query "'HostedZones[?Name==\`${domain}.\`]'"
|
||||
echo returned
|
||||
echo $RES
|
||||
# local res
|
||||
# res=$(echo $records | grep ID | awk -F'[\"#]+' '{print $4}' | awk -F'[/#]+' '{print $3}')
|
||||
# echo "$res"
|
||||
}
|
|
@ -1,86 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
function aws-get-zone-record () {
|
||||
local record
|
||||
echo get record $1 $(get-domain $1)
|
||||
record=$(
|
||||
aws route53 list-resource-record-sets \
|
||||
--hosted-zone-id $(aws-get-zone-id $1)
|
||||
)
|
||||
echo "$record"
|
||||
}
|
||||
|
||||
function aws-get-zone-record-prop () {
|
||||
local record
|
||||
record=$(aws-get-zone-record $1)
|
||||
local res
|
||||
res=$(get-prop-value "$record" $2)
|
||||
echo "$res"
|
||||
}
|
||||
|
||||
|
||||
function aws-get-zone-record-value () {
|
||||
local record
|
||||
record=$(aws-get-zone-record $1)
|
||||
local res
|
||||
res=$(get-prop-value "$record" "ResourceRecords[0].Value")
|
||||
echo "$res"
|
||||
}
|
||||
|
||||
function aws-update-zone-record-value () {
|
||||
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "Both recordset and value required"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
RECORDSET=$1
|
||||
VALUE=$2
|
||||
COMMENT=${3:-"Updating Record"}
|
||||
RECORD=$(aws-get-zone-record "$RECORDSET")
|
||||
echo the reccord $RECORD
|
||||
# ZONENAME=$(get-domain $RECORDSET)
|
||||
ZONEID=$(aws-get-zone-id "$(get-domain $RECORDSET )")
|
||||
# The Time-To-Live of this recordset
|
||||
# echo Zone Name and ID for recordset $RECORDSET $ZONENAME $ZONEID
|
||||
# TTL=60 # call this later with increase
|
||||
# Fill a temp file with valid JSON
|
||||
CHANGE="{
|
||||
\"Comment\":\"$COMMENT\",
|
||||
\"Changes\":[
|
||||
{
|
||||
\"Action\":\"UPSERT\",
|
||||
\"ResourceRecordSet\":{
|
||||
\"ResourceRecords\":[
|
||||
{
|
||||
\"Value\":\"$VALUE\"
|
||||
}
|
||||
],
|
||||
\"Name\":\"$RECORDSET\",
|
||||
\"Type\":\"$(get-prop-value "$RECORD" Type)\",
|
||||
\"TTL\":\"$(get-prop-value "$RECORD" TTL)\"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"
|
||||
echo updating record with
|
||||
batch=\'${CHANGE}\'
|
||||
echo batch
|
||||
|
||||
|
||||
# Update the Hosted Zone record
|
||||
CMD="aws route53 change-resource-record-sets
|
||||
--hosted-zone-id ${ZONEID}
|
||||
--change-batch $batch
|
||||
"
|
||||
|
||||
echo "${CMD}"
|
||||
local res
|
||||
res=$($CMD)
|
||||
echo "$res"
|
||||
|
||||
|
||||
# echo confirm change $(aws-get-zone-record-value $RECORDSET)
|
||||
# end function
|
||||
}
|
|
@ -1,105 +0,0 @@
|
|||
#!/bin/bash
|
||||
function route53-set-record () {
|
||||
# (optional) You might need to set your PATH variable at the top here
|
||||
# depending on how you run this script
|
||||
# PATH=PATH
|
||||
|
||||
# Hosted Zone ID e.g. BJBK35SKMM9OE
|
||||
ZONEID="ZF04FGKB9QHN2"
|
||||
|
||||
# The CNAME you want to update e.g. hello.example.com
|
||||
RECORDSET="238.kebler.net"
|
||||
|
||||
# More advanced options below
|
||||
# The Time-To-Live of this recordset
|
||||
TTL=300
|
||||
# Change this if you want
|
||||
COMMENT="Auto updating @ `date`"
|
||||
# Change to AAAA if using an IPv6 address
|
||||
TYPE="A"
|
||||
|
||||
# Get the external IP address from OpenDNS (more reliable than other providers)
|
||||
IP=`dig +short myip.opendns.com @resolver1.opendns.com`
|
||||
|
||||
echo current ip is $IP
|
||||
|
||||
|
||||
# Get current dir
|
||||
# (from http://stackoverflow.com/a/246128/920350)
|
||||
# DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
DIR=$HOME
|
||||
LOGFILE="$DIR/update-route53.log"
|
||||
IPFILE="$DIR/update-route53.ip"
|
||||
|
||||
if ! valid_ip $IP; then
|
||||
echo "Invalid IP address: $IP" >> "$LOGFILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if the IP has changed
|
||||
if [ ! -f "$IPFILE" ]
|
||||
then
|
||||
touch "$IPFILE"
|
||||
fi
|
||||
|
||||
if grep -Fxq "$IP" "$IPFILE"; then
|
||||
# code if found
|
||||
echo "IP is still $IP. Exiting" >> "$LOGFILE"
|
||||
exit 0
|
||||
else
|
||||
echo "IP has changed to $IP" >> "$LOGFILE"
|
||||
# Fill a temp file with valid JSON
|
||||
TMPFILE=$(mktemp /tmp/temporary-file.XXXXXXXX)
|
||||
cat > ${TMPFILE} << EOF
|
||||
{
|
||||
"Comment":"$COMMENT",
|
||||
"Changes":[
|
||||
{
|
||||
"Action":"UPSERT",
|
||||
"ResourceRecordSet":{
|
||||
"ResourceRecords":[
|
||||
{
|
||||
"Value":"$IP"
|
||||
}
|
||||
],
|
||||
"Name":"$RECORDSET",
|
||||
"Type":"$TYPE",
|
||||
"TTL":$TTL
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
# Update the Hosted Zone record
|
||||
aws route53 change-resource-record-sets \
|
||||
--hosted-zone-id $ZONEID \
|
||||
--change-batch file://"$TMPFILE" >> "$LOGFILE"
|
||||
echo "IP Changed in Route53" >> "$LOGFILE"
|
||||
|
||||
# Clean up
|
||||
rm $TMPFILE
|
||||
fi
|
||||
|
||||
# All Done - cache the IP address for next time
|
||||
echo "$IP" > "$IPFILE"
|
||||
|
||||
}
|
||||
# end function
|
||||
|
||||
function valid_ip()
|
||||
{
|
||||
local ip=$1
|
||||
local stat=1
|
||||
|
||||
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||
OIFS=$IFS
|
||||
IFS='.'
|
||||
ip=($ip)
|
||||
IFS=$OIFS
|
||||
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
|
||||
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
|
||||
stat=$?
|
||||
fi
|
||||
return $stat
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
#!/bin/bash
|
||||
function caddye(){
|
||||
rrem sysadmin@nas.kebler.net "gedit /opt/caddy/caddy.conf"
|
||||
}
|
||||
|
||||
function caddys(){
|
||||
rrem sysadmin@nas.kebler.net "sudo systemctl status caddy"
|
||||
}
|
||||
|
||||
function caddyj(){
|
||||
rrem sysadmin@nas.kebler.net "journalctl -u caddy | tail -f -n -100"
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
#!/bin/bash
|
||||
# nas
|
||||
|
||||
## rrem already loaded in 00-basic
|
||||
|
||||
function nasfm(){
|
||||
rrem sysadmin@nas.kebler.net "nemo $1"
|
||||
}
|
||||
|
||||
function nasdisk(){
|
||||
rrem sysadmin@nas.kebler.net "sudo gnome-disks"
|
||||
}
|
||||
|
||||
|
||||
function nasgparted(){
|
||||
rrem sysadmin@nas.kebler.net "sudo gparted"
|
||||
}
|
||||
|
||||
function nasdata(){
|
||||
rrem sysadmin@nas.kebler.net "nemo /mnt/data"
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
A test
|
|
@ -1,16 +0,0 @@
|
|||
#!/bin/bash
|
||||
# simple copy using rsync. Preserves everything
|
||||
# present working directory to supplied destination
|
||||
module_load confirm
|
||||
function cprs () {
|
||||
local usesudo
|
||||
local cmd
|
||||
[[ $1 == "-s" ]] && usesudo='sudo' && shift
|
||||
[ $# -ne 2 ] && echo two directories source and destination need to be passed && return 1
|
||||
[ ! -d "$1" ] && echo source: $1 is not a directory && return 1
|
||||
cmd="$usesudo rsync --exclude *[C]ache* --exclude node_modules --progress -aAru $1 $2"
|
||||
echo $cmd
|
||||
confirm Do you want to start the rsync copy? || return 0
|
||||
echo copying.....
|
||||
eval $cmd
|
||||
}
|
|
@ -1,13 +1,7 @@
|
|||
#!/bin/bash
|
||||
# 00 will get loaded first
|
||||
|
||||
##-- functions which may be used by any of the alias file --#
|
||||
|
||||
group_add() {
|
||||
[[ ! $(getent group $1) ]] && echo "no group $1, aborting" && return 1
|
||||
echo adding group $1 to $USER
|
||||
sudo usermod -a -G $1 $USER
|
||||
}
|
||||
##
|
||||
|
||||
user_reload() {
|
||||
save=$PWD
|
||||
|
@ -95,13 +89,6 @@ osinfo () {
|
|||
cat /etc/upstream-release/lsb-release
|
||||
}
|
||||
|
||||
# adduserid name id#
|
||||
# add a suer with specific id number
|
||||
adduserid () {
|
||||
sudo groupadd -g $2 $1
|
||||
sudo useradd -d ${/home/$1} -s /bin/bash -u $2 -g $1 $1
|
||||
}
|
||||
|
||||
fsudo () # run a function as sudo
|
||||
{
|
||||
[[ "$(type -t $1)" == "function" ]] &&
|
|
@ -0,0 +1 @@
|
|||
module_load system-path
|
|
@ -0,0 +1 @@
|
|||
module_load security
|
|
@ -0,0 +1 @@
|
|||
module_load logit
|
|
@ -1,2 +1,3 @@
|
|||
/backup-users/
|
||||
/backup/
|
||||
/scripts/archive
|
|
@ -0,0 +1,23 @@
|
|||
# This .bash_profile is for use ONLY! with UCI bash shell system
|
||||
# this is only sourced for login shell
|
||||
|
||||
# uncomment these for UCI Shell debugging.
|
||||
# echo ---- sourcing system .bash_profile for user root ---
|
||||
# [[ $USER_ROOT ]] && echo 'Root User' || echo 'Non Root User'
|
||||
# [[ $SHELL_INTERACTIVE ]] && echo 'Interactive' || echo 'Not interactive'
|
||||
# [[ $SHELL_LOGIN ]] && echo 'Login shell' || echo 'Not login shell'
|
||||
# [[ $SSH_SESSION ]] && echo ssh remote user || echo local user
|
||||
# env | grep BASH
|
||||
# echo ---------------------
|
||||
|
||||
|
||||
if [[ $SHELL_INTERACTIVE ]]; then
|
||||
# only source .bashrc if interactive login shell
|
||||
[[ -f "/root/.bashrc" ]] && source "/root/.bashrc"
|
||||
else
|
||||
# non-interactive root login commands
|
||||
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
||||
fi
|
||||
|
||||
# any (interactive or not) root login shell commands can go here.
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# this .bashrc for use ONLY with uci bash shell system
|
||||
|
||||
# uncomment these for debugging.
|
||||
# echo ---- sourcing system .bashrc for user $USER ---
|
||||
# [[ $USER_ROOT ]] && echo 'Root User' || echo 'Non Root User'
|
||||
# [[ $SHELL_INTERACTIVE ]] && echo 'Interactive' || echo 'Not interactive'
|
||||
# [[ $SHELL_LOGIN ]] && echo 'Login shell' || echo 'Not login shell'
|
||||
# [[ $SSH_SESSION ]] && echo ssh remote user || echo local user
|
||||
# env | grep BASH
|
||||
# echo ---------------------
|
||||
|
||||
|
||||
# uncomment for custom processing
|
||||
#if [[ $SHELL_LOGIN ]]; then
|
||||
# echo "login shell (called from .bash_profile)"
|
||||
# fi
|
||||
|
||||
if [[ $SSH_SESSION ]]; then
|
||||
# echo remote ssh session
|
||||
cd /opt
|
||||
fi
|
||||
|
||||
# anything below will be sourced by all shell types (except non-interactive/login)
|
||||
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
|
@ -0,0 +1,7 @@
|
|||
## This .profile is for use ONLY! with UCI bash shell system
|
||||
# this is only sourced for non bash login shell which should never happen
|
||||
|
||||
echo /root/.profile being sourced
|
||||
echo WARNING: /root/.profile should never be sourced for root
|
||||
[[ ! -f /root/.bash_profile ]] && echo unless .bash_profile does not exist which it does not!
|
||||
echo corrective action required
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
# sourced for bash login shell only
|
||||
|
||||
# uncomment these for debugging.
|
||||
# echo ---- sourcing system .bash_profile for user $USER ---
|
||||
# [[ $USER_ROOT ]] && echo 'Root User' || echo 'Non Root User'
|
||||
# [[ $SHELL_INTERACTIVE ]] && echo 'Interactive' || echo 'Not interactive'
|
||||
# [[ $SHELL_LOGIN ]] && echo 'Login shell' || echo 'Not login shell'
|
||||
# [[ $SSH_SESSION ]] && echo ssh remote user || echo local user
|
||||
# env | grep BASH
|
||||
# echo ---------------------
|
||||
|
||||
|
||||
# only source .bashrc if interactive login shell
|
||||
if [[ $SHELL_INTERACTIVE ]]; then
|
||||
[[ -f "/root/.bashrc" ]] && source "/root/.bashrc"
|
||||
else
|
||||
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
||||
fi
|
||||
|
||||
# only source .bashrc if interactive login shell
|
||||
if [[ $SHELL_INTERACTIVE ]];then
|
||||
[[ -f "$HOME/.bashrc" ]] && source "$HOME/.bashrc"
|
||||
else
|
||||
# noninteractive login shell
|
||||
:
|
||||
fi
|
|
@ -10,10 +10,9 @@
|
|||
|
||||
if ( [[ $SHELL_INTERACTIVE ]] );then
|
||||
if ( [[ $BASH_SHELL_BASE_LOADED = true ]] ) ; then
|
||||
export BASH_SHELL_USER=${BASH_SHELL_USER:-"shell"}
|
||||
# echo loading user $USER shell at BASH_SHELL_USER_DIR
|
||||
[[ -d BASH_SHELL_USER_DIR ]] && shell_process_directory "BASH_SHELL_USER_DIR" ||\
|
||||
echo no user shell directory BASH_SHELL_USER_DIR to process, create one or clone a template
|
||||
[[ -d $HOME/BASH_SHELL_USER_DIR ]] && shell_process_directory "BASH_SHELL_USER_DIR" ||\
|
||||
echo no user shell directory at $BASH_SHELL_USER_DIR to process, create one or clone a template
|
||||
fi
|
||||
# uncomment to add non-interactive setup/sourcing
|
||||
# else
|
|
@ -0,0 +1,2 @@
|
|||
# echo $USER .profile
|
||||
# called at GUI login or when .bash_profile does not exist"
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
uci_bash_shell_install () {
|
||||
local usesudo
|
||||
export install_dir="$(dirname $(realpath "${BASH_SOURCE:-$0}"))"
|
||||
export BASH_SHELL_BASE="$(dirname $install_dir)"
|
||||
# export BASH_SHELL_BASE="$(dirname "$(cd "$(dirname "${BASH_SOURCE:-$0}")" >/dev/null 2>&1 ; pwd -P )")"
|
||||
echo "Detected The UCI BASH Shell install directory: BASH_INSTALL_DIR=$install_dir"
|
||||
echo "Detected The UCI BASH Shell base directory: BASH_SHELL_BASE=$BASH_SHELL_BASE"
|
||||
[[ $EUID -ne 0 ]] && usesudo=sudo
|
||||
$usersudo $SHELL $BASH_SHELL_BASE/install/script/copy-etc.sh
|
||||
echo $usersudo $SHELL $BASH_SHELL_BASE/install/script/copy-root.sh
|
||||
[[ $(id -u $1 2> /dev/null) ]] && echo $usersudo $SHELL $BASH_SHELL_BASE/install/script/copy-user.sh $1
|
||||
}
|
||||
|
||||
# # if script was executed then call the function
|
||||
(return 0 2>/dev/null) || uci_bash_shell_install "$@"
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
uci_bash_shell_etc_copy () {
|
||||
echo -e "************ copying uci shell profile and bash.bashrc files to /etc ********"
|
||||
files=$(find $BASH_SHELL_BASE/install/files/etc/ -maxdepth 1 -type f)
|
||||
for file in $files; do install -m 644 -o root -g root $file /etc; done
|
||||
echo setting BASH_SHELL_BASE to $BASH_SHELL_BASE in etc/bash.bashrc and /etc/profile
|
||||
sed -i 's:_BASH_SHELL_BASE_:'${BASH_SHELL_BASE}':' /etc/bash.bashrc
|
||||
sed -i 's:BASH_SHELL_BASE=.*:BASH_SHELL_BASE='${BASH_SHELL_BASE}':' /etc/profile
|
||||
echo -e "************ copying uci shell profile.d/ files /etc/profile.d/ ********"
|
||||
files=$(find $BASH_SHELL_BASE/install/files/etc/profile.d -maxdepth 1 -type f)
|
||||
for file in $files; do install -m 644 -o root -g root $file /etc/profile.d; done
|
||||
}
|
||||
|
||||
# # if script was executed then call the function
|
||||
(return 0 2>/dev/null) || uci_bash_shell_etc_copy "$@"
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
uci_bash_shell_root_copy () {
|
||||
echo -e "************ copying uci shell .profile and .bashrc files to /root ********"
|
||||
group=root
|
||||
files=$(find $BASH_SHELL_BASE/setup/root/ -type f)
|
||||
for file in $files; do install -m 640 -o root -g $group $file /root; done
|
||||
}
|
||||
|
||||
# # if script was executed then call the function
|
||||
(return 0 2>/dev/null) || uci_bash_shell_root_copy "$@"
|
|
@ -0,0 +1,31 @@
|
|||
#!/bin/bash
|
||||
|
||||
uci_bash_shelluser_copy () {
|
||||
local user; local user_home; local dir
|
||||
user=${1:-$USER}
|
||||
dir=${2:-shell}
|
||||
[[ $(id -u $1 2> /dev/null) -eq 0 ]] && echo user is root use root user copy script, exiting && return 1
|
||||
[[ ! $(id -u $user) -ge 1000 ]] && echo "no user $user or user not a regular" && return 2
|
||||
[[! $(getent passwd | grep $user | grep /bin/bash) ]] && echo user $user is not using bash shell, exiting && return 3
|
||||
|
||||
user_home=$( getent passwd $user | cut -d: -f6 )
|
||||
[[ ! $user_home ]] && echo no user home directory in which to install shell files, exiting && return 4
|
||||
|
||||
echo -e "*********** copying UCI BASH Shell .profile and bash_profile and .bashrc for user: $user *******"
|
||||
mkdir -P
|
||||
files=$(find $Install_dir/files/user -type f)
|
||||
for file in $files; do
|
||||
install -C -m 660 -o $user -g $user $file $user_home
|
||||
done
|
||||
|
||||
sed -i '/[[ $BASH_SHELL_BASE_LOADED = true ]]/ i\ BASH_SHELL_USER_DIR='$dir'' $user_home/.bashrc
|
||||
|
||||
dir=$user_home/$dir
|
||||
echo -e "*********** create UCI BASH Shell directories for user in $dir *******"
|
||||
mkdir -p $dir/env $dir/functions $dir/modules $dir/ssh/config $dir/ssh/mounts $dir/startup
|
||||
chown -R $user:$user $dir
|
||||
}
|
||||
|
||||
|
||||
# # if script was executed then call the function
|
||||
(return 0 2>/dev/null) || uci_bash_shelluser "$@"
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
# module will install the uci-shell system on a remote machine
|
||||
# must be run as sudo
|
||||
mkdir -p /shell
|
||||
chown 1000:users /shell
|
||||
git clone https://git.kebler.net/base/shell-base.git /shell/base
|
2
lang/gcc
2
lang/gcc
|
@ -1,2 +0,0 @@
|
|||
# colored GCC warnings and errors
|
||||
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
|
@ -1,2 +0,0 @@
|
|||
# make less more friendly for non-text input files, see lesspipe(1)
|
||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/bash
|
||||
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||
case "$TERM" in
|
||||
xterm|xterm-color|*-256color) color_prompt=yes;;
|
||||
esac
|
|
@ -1,117 +0,0 @@
|
|||
#!/bin/bash
|
||||
add-ppa () {
|
||||
|
||||
if [ $EUID != 0 ]; then
|
||||
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 $@
|
|
@ -10,15 +10,24 @@
|
|||
|
||||
bundle () {
|
||||
|
||||
[[ ! -f $1 ]] && return 1
|
||||
local file
|
||||
|
||||
if [[ $1 == "-m" ]]; then
|
||||
shift 1
|
||||
file=$(module_find $1)
|
||||
else
|
||||
file=$1
|
||||
fi
|
||||
|
||||
[[ ! -f $file ]] && return 1
|
||||
module_load file
|
||||
|
||||
if [[ ! $2 == "__recurse__" ]]; then
|
||||
tmp_file=$( mktemp -t TEMP_FILE_bundle.XXXXXXXX )
|
||||
chmod 600 "$tmp_file"
|
||||
\cp $1 $tmp_file
|
||||
\cp $file $tmp_file
|
||||
else
|
||||
tmp_file=$1
|
||||
tmp_file=$file
|
||||
fi
|
||||
# echo current temp file: $tmp_file
|
||||
modules=$(sed -n -e 's/^module_load //p' < $tmp_file)
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
#!/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
|
|
@ -0,0 +1,56 @@
|
|||
#!/bin/bash
|
||||
# simple local copy wintin or merge one directory to another using rsync. Preserves everything
|
||||
# present working directory to supplied destination
|
||||
|
||||
isDir() {
|
||||
if [[ -d $1 ]]
|
||||
then
|
||||
echo "true"
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function dir_copy () {
|
||||
|
||||
[[ ! $(which rsync) ]] && { echo rsync must be installed to use this function; return 5; }
|
||||
module_load confirm
|
||||
local usesudo;local cmd;local src;local noconfirm;local merge
|
||||
|
||||
declare OPTION
|
||||
declare OPTARG
|
||||
declare OPTIND
|
||||
while getopts 'sem' OPTION; do
|
||||
case "$OPTION" in
|
||||
s)
|
||||
usesudo=true
|
||||
;;
|
||||
e)
|
||||
noconfirm=true
|
||||
;;
|
||||
m)
|
||||
merge=true
|
||||
;;
|
||||
*)
|
||||
echo unknown option $OPTION
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $(( OPTIND - 1 ))
|
||||
|
||||
[ $# -ne 2 ] && echo two directories source and destination need to be passed && return 2
|
||||
src=$(realpath -s $1)
|
||||
dest=$(realpath -s $2)
|
||||
[ ! -d "$src" ] && echo source: $src is not a directory && return 3
|
||||
[[ $merge ]] && src=${src}/
|
||||
cmd="$usesudo rsync --exclude *[C]ache* --exclude node_modules --progress -aAru $src $dest"
|
||||
echo $cmd
|
||||
[[ ! -v PS1 ]] && noconfirm=true
|
||||
[[ ! $noconfirm ]] && { confirm Do you want to $([[ $merge ]] && echo merge $src into || echo copy $src within) $dest? || return 0; }
|
||||
echo copying.....
|
||||
eval $cmd
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
################## BEGIN: MODULE dirs ###############
|
||||
|
||||
isDir() {
|
||||
if [[ -d $1 ]]
|
||||
then
|
||||
echo "true"
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
chmodr () {
|
||||
|
||||
# Generic Script for recursively setting permissions for directories and files
|
||||
# to defined or default permissions using chmod.
|
||||
#
|
||||
# Takes a path to recurse through and options for specifying directory and/or
|
||||
# file permissions.
|
||||
# Outputs a list of affected directories and files.
|
||||
#
|
||||
# If no options are specified, it recursively resets all directory and file
|
||||
# permissions to the default for most OSs (dirs: 755, files: 644).
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 PATH -d DIRPERMS -f FILEPERMS"
|
||||
echo "Arguments:"
|
||||
echo "PATH: path to the root directory you wish to modify permissions for"
|
||||
echo "Options:"
|
||||
echo " -d DIRPERMS, directory permissions"
|
||||
echo " -f FILEPERMS, file permissions"
|
||||
return 1
|
||||
|
||||
}
|
||||
|
||||
# Check if user entered arguments
|
||||
if [ $# -lt 1 ] ; then
|
||||
usage
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Get options
|
||||
while getopts d:f: opt
|
||||
do
|
||||
case "$opt" in
|
||||
d) DIRPERMS="$OPTARG";;
|
||||
f) FILEPERMS="$OPTARG";;
|
||||
\?) usage;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Shift option index so that $1 now refers to the first argument
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
# Default directory and file permissions, if not set on command line
|
||||
if [ -z "$DIRPERMS" ] && [ -z "$FILEPERMS" ] ; then
|
||||
DIRPERMS=755
|
||||
FILEPERMS=644
|
||||
fi
|
||||
|
||||
# Set the root path to be the argument entered by the user
|
||||
ROOT=$1
|
||||
|
||||
# Check if the root path is a valid directory
|
||||
if [ ! -d $ROOT ] ; then
|
||||
echo "$ROOT does not exist or isn't a directory!" ; return 2
|
||||
fi
|
||||
|
||||
# Recursively set directory/file permissions based on the permission variables
|
||||
if [ -n "$DIRPERMS" ] ; then
|
||||
find $ROOT -type d -print0 | xargs -0 chmod -v $DIRPERMS
|
||||
fi
|
||||
|
||||
if [ -n "$FILEPERMS" ] ; then
|
||||
find $ROOT -type f -print0 | xargs -0 chmod -v $FILEPERMS
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
################## END: MODULE dirs ###############
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
# environment and environment file functions
|
||||
module_load iecho
|
||||
|
||||
clean_env_file () {
|
||||
local compact
|
||||
|
@ -29,7 +30,7 @@ env_file () {
|
|||
# ignore non assignment lines
|
||||
list_env_file_vars () {
|
||||
env=$(env_file $1)
|
||||
# cat $env
|
||||
cat $env
|
||||
[[ ! $env ]] && { iecho "Env file ${1} doesn't exist"; return 1; }
|
||||
clean_env_file $env | grep -v '^#'| sed -n -E 's/(.*)=[^ =].*/\1/p' | xargs
|
||||
}
|
||||
|
|
|
@ -1,16 +1,45 @@
|
|||
#!/bin/bash
|
||||
|
||||
# load module and call fancy_prompt
|
||||
# see
|
||||
# used http://bashrcgenerator.com/
|
||||
# and
|
||||
# https://unix.stackexchange.com/questions/148/colorizing-your-terminal-and-shell-environment/174#174
|
||||
|
||||
# TODO move parse_git_branch, check for git before returning a value
|
||||
|
||||
function parse_git_branch() {
|
||||
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
|
||||
}
|
||||
|
||||
function set_prompt_colors () {
|
||||
export TERM=xterm-color
|
||||
export CLICOLOR=1
|
||||
export LSCOLORS=ExFxCxDxBxegedabagacad
|
||||
|
||||
export COLOR_NC='\e[0m' # No Color
|
||||
export COLOR_BLACK='\e[0;30m'
|
||||
export COLOR_GRAY='\e[1;30m'
|
||||
export COLOR_RED='\e[0;31m'
|
||||
export COLOR_LIGHT_RED='\e[1;31m'
|
||||
export COLOR_GREEN='\e[0;32m'
|
||||
export COLOR_LIGHT_GREEN='\e[1;32m'
|
||||
export COLOR_BROWN='\e[0;33m'
|
||||
export COLOR_YELLOW='\e[1;33m'
|
||||
export COLOR_BLUE='\e[0;34m'
|
||||
export COLOR_LIGHT_BLUE='\e[1;34m'
|
||||
export COLOR_PURPLE='\e[0;35m'
|
||||
export COLOR_LIGHT_PURPLE='\e[1;35m'
|
||||
export COLOR_CYAN='\e[0;36m'
|
||||
export COLOR_LIGHT_CYAN='\e[1;36m'
|
||||
export COLOR_LIGHT_GRAY='\e[0;37m'
|
||||
export COLOR_WHITE='\e[1;37m'
|
||||
}
|
||||
|
||||
function fancy_prompt () {
|
||||
|
||||
# if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||
set_prompt_colors
|
||||
|
||||
function c () {
|
||||
local color
|
||||
|
@ -53,5 +82,4 @@ PS1=$(echo "$user$machine$dir$branch$promptc")
|
|||
# echo $PS1
|
||||
}
|
||||
|
||||
# fancy prompt is on by default comment out to disable default
|
||||
fancy_prompt
|
||||
|
|
@ -15,3 +15,4 @@ find_mountpoint () {
|
|||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
# 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
|
||||
# set to location for tokens in file
|
||||
# DEPRECATED use python based lastversion https://github.com/dvershinin/lastversion
|
||||
source ~/githubapitoken
|
||||
|
||||
if [ "$GITHUB_TOKEN" != "" ]; then
|
|
@ -1,4 +1,6 @@
|
|||
#!/bin/bash
|
||||
################## BEGIN: MODULE security ###############
|
||||
|
||||
module_load confirm
|
||||
module_load helpers
|
||||
#source ${BASH_SOURCE[0]}/confirm.sh
|
||||
|
@ -147,3 +149,76 @@ share_dir() {
|
|||
getfacl -p $dir
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
chmodr () {
|
||||
|
||||
# Generic Script for recursively setting permissions for directories and files
|
||||
# to defined or default permissions using chmod.
|
||||
#
|
||||
# Takes a path to recurse through and options for specifying directory and/or
|
||||
# file permissions.
|
||||
# Outputs a list of affected directories and files.
|
||||
#
|
||||
# If no options are specified, it recursively resets all directory and file
|
||||
# permissions to the default for most OSs (dirs: 755, files: 644).
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 PATH -d DIRPERMS -f FILEPERMS"
|
||||
echo "Arguments:"
|
||||
echo "PATH: path to the root directory you wish to modify permissions for"
|
||||
echo "Options:"
|
||||
echo " -d DIRPERMS, directory permissions"
|
||||
echo " -f FILEPERMS, file permissions"
|
||||
return 1
|
||||
|
||||
}
|
||||
|
||||
# Check if user entered arguments
|
||||
if [ $# -lt 1 ] ; then
|
||||
usage
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Get options
|
||||
while getopts d:f: opt
|
||||
do
|
||||
case "$opt" in
|
||||
d) DIRPERMS="$OPTARG";;
|
||||
f) FILEPERMS="$OPTARG";;
|
||||
\?) usage;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Shift option index so that $1 now refers to the first argument
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
# Default directory and file permissions, if not set on command line
|
||||
if [ -z "$DIRPERMS" ] && [ -z "$FILEPERMS" ] ; then
|
||||
DIRPERMS=755
|
||||
FILEPERMS=644
|
||||
fi
|
||||
|
||||
# Set the root path to be the argument entered by the user
|
||||
ROOT=$1
|
||||
|
||||
# Check if the root path is a valid directory
|
||||
if [ ! -d $ROOT ] ; then
|
||||
echo "$ROOT does not exist or isn't a directory!" ; return 2
|
||||
fi
|
||||
|
||||
# Recursively set directory/file permissions based on the permission variables
|
||||
if [ -n "$DIRPERMS" ] ; then
|
||||
find $ROOT -type d -print0 | xargs -0 chmod -v $DIRPERMS
|
||||
fi
|
||||
|
||||
if [ -n "$FILEPERMS" ] ; then
|
||||
find $ROOT -type f -print0 | xargs -0 chmod -v $FILEPERMS
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
################## END: MODULE dirs ###############
|
|
@ -1,7 +1,50 @@
|
|||
#!/bin/bash
|
||||
|
||||
is_user () {
|
||||
local id;local user
|
||||
echo -n $(id -u $1 2> /dev/null)
|
||||
}
|
||||
|
||||
user_group_add() {
|
||||
[[ ! $(getent group $1) ]] && echo "no group $1, aborting" && return 1
|
||||
echo adding group $1 to $USER
|
||||
sudo usermod -a -G $1 $USER
|
||||
}
|
||||
|
||||
# TODO change a user name
|
||||
# sudo usermod -d /home/joedoe -m johndoe
|
||||
# sudo groupmod -n johndoe student1
|
||||
# sudo usermod -u 5001 johndoe
|
||||
|
||||
# clone a user
|
||||
|
||||
# adduserid name id#
|
||||
# add a suer with specific id number
|
||||
# adduserid () {
|
||||
# sudo groupadd -g $2 $1
|
||||
# sudo useradd -d ${/home/$1} -s /bin/bash -u $2 -g $1 $1
|
||||
# }
|
||||
|
||||
|
||||
adduserid() {
|
||||
|
||||
[[ "$#" -lt 1 ]] && echo a user name is requied, aborting && return 1
|
||||
name=$1
|
||||
uid=${2:-1000}
|
||||
gid=${3:-$uid}
|
||||
echo $name, $uid, $gid
|
||||
|
||||
[[ $(getent group $gid) ]] && echo group id $gid already exists, aborting && return 3
|
||||
[[ $(getent group $name) ]] && echo group name $name already exists, aborting && return 3
|
||||
[[ $(getent passwd $uid) ]] && echo user id $uid already exists, aborting && return 2
|
||||
[[ $(getent passwd $name) ]] && echo user name $name already exists, aborting && return 2
|
||||
|
||||
addgroup --gid $gid $name
|
||||
adduser --uid $uid --ingroup $name --gecos "" --disabled-password --no-create-home $name
|
||||
# cat /etc/group | grep $name && cat /etc/passwd | grep $name
|
||||
|
||||
}
|
||||
|
||||
function clone_user_ () {
|
||||
|
||||
module_load confirm
|
|
@ -1,36 +0,0 @@
|
|||
#!/bin/bash
|
||||
[[ ! $(groups | grep sudo) ]] && echo this script must be run by a user with sudo privileges && exit 1
|
||||
[[ ! $BASH_SHELL_BASE ]] && BASH_SHELL_BASE="$(dirname "$(cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")"
|
||||
echo Backng up to $BASH_SHELL_BASE/setup/backup
|
||||
echo ok to continue?
|
||||
echo "type \`yes\` fully or just <enter> for no"
|
||||
read -e answer
|
||||
[[ ! $answer = "yes" ]] && exit 1
|
||||
set -o errexit
|
||||
mkdir -p $BASH_SHELL_BASE/setup/backup/etc/profile.d
|
||||
# mkdir -p $BASH_SHELL_BASE/setup/backup/user
|
||||
mkdir -p $BASH_SHELL_BASE/setup/backup/root
|
||||
# host system files in /etc
|
||||
[[ -f /etc/profile ]] && cp -v /etc/profile $BASH_SHELL_BASE/setup/backup/etc
|
||||
[[ -f /etc/bash.bashrc ]] && cp -v /etc/bash.bashrc $BASH_SHELL_BASE/setup/backup/etc
|
||||
[[ -d /etc/profile.d ]] && cp -vR /etc/profile.d/ $BASH_SHELL_BASE/setup/backup/etc/
|
||||
# current user files in $HOME
|
||||
# [[ -f $HOME/.bash_profile ]] && cp -v $HOME/.bash_profile $BASH_SHELL_BASE/setup/backup/user
|
||||
# [[ -f $HOME/.profile ]] && cp -v $HOME/.profile $BASH_SHELL_BASE/setup/backup/user
|
||||
# [[ -f $HOME/.bashrc ]] && cp -v $HOME/.bashrc $BASH_SHELL_BASE/setup/backup/user
|
||||
# [[ -f $HOME/.bash_logout ]] && cp -v $HOME/.bash_logout $BASH_SHELL_BASE/setup/backup/user
|
||||
if [[ $(stat -c "%G" /root) = "sudo" ]]; then
|
||||
[[ -f /root/.bash_profile ]] && cp -v /root/.bash_profile $BASH_SHELL_BASE/setup/backup/root
|
||||
[[ -f /root/.profile ]] && cp -v /root/.profile $BASH_SHELL_BASE/setup/backup/root
|
||||
[[ -f /root/.bashrc ]] && cp -v /root/.bashrc $BASH_SHELL_BASE/setup/backup/root
|
||||
[[ -f /root/.bash_logout ]] && cp -v /root/.bash_logout $BASH_SHELL_BASE/setup/backup/root
|
||||
else
|
||||
echo no sudo group read access to /root so backing up /root as root
|
||||
sudo -E -- bash -c '[[ ! -f /root/.profile ]] && exit 0; cp -v /root/.profile $BASH_SHELL_BASE/setup/backup/root'
|
||||
sudo -E -- bash -c '[[ ! -f /root/.bashrc ]] && exit 0; cp -v /root/.bashrc $BASH_SHELL_BASE/setup/backup/root'
|
||||
sudo -E -- bash -c '[[ ! -f /root/.bash_profile ]] && exit 0; cp -v /root/.bash_profile $BASH_SHELL_BASE/setup/backup/root'
|
||||
sudo -E -- bash -c '[[ ! -f /root/.bash_logout ]] && exit 0; cp -v /root/.bash_logout $BASH_SHELL_BASE/setup/backup/root'
|
||||
fi
|
||||
set +o errexit
|
||||
echo backup of system shell files complete!
|
||||
exit 0
|
|
@ -1,42 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
_USER=${1:-$USER}
|
||||
[[ ! $(id -u $_USER) -ge 1000 ]] && echo "no user $_USER or user not a regular" && exit 1
|
||||
echo user: $_USER deployment
|
||||
[[ ! $BASH_SHELL_BASE ]] && BASH_SHELL_BASE="$(dirname "$(cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")"
|
||||
echo Base Shell Directory as detected is $BASH_SHELL_BASE
|
||||
echo ok to continue?
|
||||
echo "type \`yes\` fully or just <enter> to exit"
|
||||
read -e answer
|
||||
[[ ! $answer = "yes" ]] && exit 1
|
||||
|
||||
UBDIR=$BASH_SHELL_BASE/setup/backup-users/$_USER
|
||||
_USER_DIR=$(getent passwd "$USER" | cut -d : -f 6)
|
||||
files=".bash_profile .profile .bashrc .bash_logout"
|
||||
# uncomment for debugging
|
||||
# rm -rf $UBDIR
|
||||
if [[ ! -d $UBDIR ]]; then
|
||||
echo "first backing up $_USER_DIR shell files before deploying"
|
||||
mkdir -p $UBDIR
|
||||
for file in $files ; do
|
||||
[[ -f $_USER_DIR/$file ]] && sudo install -C -m 660 -o root -g sudo $_USER_DIR/$file $UBDIR
|
||||
done
|
||||
fi
|
||||
echo "ready to deploy $_USER shell files"
|
||||
echo "Double check files in $UBDIR"
|
||||
echo "continue? type \`yes\` fully or just <enter> for no"
|
||||
read -e answer
|
||||
[[ ! $answer = "yes" ]] && echo aborting deploy && exit 1
|
||||
echo -----------------;echo deploying user shell files to /home/$_USER
|
||||
echo
|
||||
files=$(find $BASH_SHELL_BASE/setup/user/ -type f)
|
||||
for file in $files; do
|
||||
cmd="install -C -m 660 -o $_USER -g sudo $file $_USER_DIR"
|
||||
[[ $USER = "$_USER" ]] && eval $cmd || sudo -E -- bash -c "$cmd"
|
||||
done
|
||||
echo "the default user bash shell repo subdirecty is \`shell\`"
|
||||
echo "enter an alternative subdirectory under $_USER_DIR or just <enter> to accept default"
|
||||
read -e answer
|
||||
[[ ! $answer ]] && echo will source default user shell repo at $_USER_DIR/shell && exit 0
|
||||
sed -i '/[[ $BASH_SHELL_BASE_LOADED = true ]]/ i\ BASH_SHELL_USER='$answer'' $_USER_DIR/.bashrc
|
||||
echo will be processing user shell repo at $_USER_DIR/$answer
|
|
@ -1,49 +0,0 @@
|
|||
#!/bin/bash
|
||||
BASH_SHELL_BASE="$(dirname "$(cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")"
|
||||
echo Base Shell Directory as detected is $BASH_SHELL_BASE
|
||||
echo ok to continue?
|
||||
echo "type \`yes\` fully or just <enter> for no"
|
||||
read -e answer
|
||||
[[ ! $answer = "yes" ]] && exit 1
|
||||
[[ ! $(groups | grep sudo) ]] && echo this script must be run by a user with sudo privileges && exit 1
|
||||
# uncomment for debugging
|
||||
# rm -rf $BASH_SHELL_BASE/setup/backup/
|
||||
if [[ ! $(stat -c "%G" /root) = "sudo" ]]; then
|
||||
echo "Allow all sudoers read access to /root directory and files?"
|
||||
echo "type \`yes\` fully or just <enter> for no"
|
||||
read -e answer
|
||||
if [[ $answer = "yes" ]]; then
|
||||
sudo chown -R root:sudo /root
|
||||
sudo chmod -R g+rX /root
|
||||
echo sudo group and permissions on /root were set || \
|
||||
echo error during sudo access setup
|
||||
else
|
||||
echo;echo sudoer access to /root was declined
|
||||
fi
|
||||
fi
|
||||
if [[ ! -d $BASH_SHELL_BASE/setup/backup ]]; then
|
||||
echo "backing up shell files before deploying"
|
||||
$BASH_SHELL_BASE/setup/backup.sh
|
||||
[[ $? -ne 0 ]] && echo issue with backup did not deploy && exit 1
|
||||
# echo backup finished to $BASH_SHELL_BASE/setup/backup
|
||||
fi
|
||||
echo "ready to deploy shell files"
|
||||
echo "Double check files in $BASH_SHELL_BASE/setup/backup"
|
||||
echo "continue? type \`yes\` fully or just <enter> for no"
|
||||
read -e answer
|
||||
[[ ! $answer = "yes" ]] && echo aborting deploy && exit 1
|
||||
echo -----------------;echo deploying /etc shell files
|
||||
files=$(find $BASH_SHELL_BASE/setup/etc/ -maxdepth 1 -type f)
|
||||
for file in $files; do sudo install -C -m 644 -o root -g root $file /etc; done
|
||||
echo setting BASH_SHELL_BASE to $BASH_SHELL_BASE in etc/bash.bashrc and /etc/profile
|
||||
sudo sed -i 's:_BASH_SHELL_BASE_:'${BASH_SHELL_BASE}':' /etc/bash.bashrc
|
||||
sudo sed -i 's:BASH_SHELL_BASE=.*:BASH_SHELL_BASE='${BASH_SHELL_BASE}':' /etc/profile
|
||||
files=$(find $BASH_SHELL_BASE/setup/etc/profile.d -maxdepth 1 -type f)
|
||||
for file in $files; do sudo install -C -m 644 -o root -g root $file /etc/profile.d; done
|
||||
echo -----------------;echo deploying /root shell files
|
||||
group=root
|
||||
[[ $(stat -c "%G" /root) = "sudo" ]] && group=sudo
|
||||
files=$(find $BASH_SHELL_BASE/setup/root/ -type f)
|
||||
for file in $files; do sudo install -C -m 640 -o root -g $group $file /root; done
|
||||
echo -----------------
|
||||
source $BASH_SHELL_BASE/setup/deploy-user.sh
|
|
@ -1,16 +0,0 @@
|
|||
#!/bin/bash
|
||||
mkdir -p $BASH_SHELL_BASE/setup/etc/profile.d
|
||||
mkdir -p $BASH_SHELL_BASE/setup/user
|
||||
mkdir -p $BASH_SHELL_BASE/setup/root
|
||||
cp -vi /etc/profile $BASH_SHELL_BASE/setup/etc
|
||||
cp -vi /etc/bash.bashrc $BASH_SHELL_BASE/setup/etc
|
||||
cp -vi /etc/profile.d/02-root.sh $BASH_SHELL_BASE/setup/etc/profile.d
|
||||
cp -vi /etc/profile.d/03-startup.sh $BASH_SHELL_BASE/setup/etc/profile.d
|
||||
cp -vi $HOME/.bash_profile $BASH_SHELL_BASE/setup/user
|
||||
cp -vi $HOME/.profile $BASH_SHELL_BASE/setup/user
|
||||
cp -vi $HOME/.bashrc $BASH_SHELL_BASE/setup/user
|
||||
cp -vi $HOME/.bash_logout $BASH_SHELL_BASE/setup/user
|
||||
cp -vi /root/.bash_profile $BASH_SHELL_BASE/setup/root
|
||||
cp -vi /root/.profile $BASH_SHELL_BASE/setup/root
|
||||
cp -vi /root/.bashrc $BASH_SHELL_BASE/setup/root
|
||||
cp -vi /root/.bash_logout $BASH_SHELL_BASE/setup/root
|
|
@ -1,5 +0,0 @@
|
|||
# echo $USER .bash_profile
|
||||
export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
|
||||
if [ -f ~/.bashrc ]; then
|
||||
. ~/.bashrc
|
||||
fi
|
|
@ -1 +0,0 @@
|
|||
# echo $USER .bashrc
|
|
@ -1,2 +0,0 @@
|
|||
echo $USER .profile
|
||||
echo "for bash login shell only called if .bash_profile does not exist"
|
|
@ -1,6 +0,0 @@
|
|||
#!/bin/bash
|
||||
# uncomment for debugging
|
||||
# echo ".bash_profile sourced at user $USER login"
|
||||
|
||||
# only source .bashrc if interactive login shell
|
||||
[[ $SHELL_INTERACTIVE ]] && [[ -f "$HOME/.bashrc" ]] && source "$HOME/.bashrc"
|
|
@ -1,2 +0,0 @@
|
|||
echo .profile, user $USER
|
||||
echo "warning: this only is sourced if .bash_profile doesn't exist"
|
Loading…
Reference in New Issue