Compare commits
19 Commits
2291793f6d
...
ef2bb4f28a
Author | SHA1 | Date | |
---|---|---|---|
ef2bb4f28a | |||
2e9d4712fa | |||
50c4834032 | |||
617326fd52 | |||
5501e3fa57 | |||
6cf389acdd | |||
b22dcd6831 | |||
4873410cd2 | |||
|
2a7519024c | ||
|
254e7834b7 | ||
|
8ff7e47140 | ||
|
6806beb733 | ||
|
dd157e834c | ||
|
f504eb3c63 | ||
|
05a05dfca6 | ||
|
22669044db | ||
|
2b6efc9a5d | ||
|
fc82020be3 | ||
|
47fbc1cb8a |
@@ -18,9 +18,8 @@ get_disks () {
|
|||||||
|
|
||||||
get_choices () {
|
get_choices () {
|
||||||
local PROMPT="$1"
|
local PROMPT="$1"
|
||||||
shift
|
|
||||||
local -n OUTPUT_VAR="$2"
|
local -n OUTPUT_VAR="$2"
|
||||||
shift
|
shift 2
|
||||||
local -a OPTIONS=( $@ )
|
local -a OPTIONS=( $@ )
|
||||||
|
|
||||||
select item in ${OPTIONS[@]} quit; do
|
select item in ${OPTIONS[@]} quit; do
|
||||||
@@ -42,11 +41,9 @@ get_choices () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get_choice () {
|
get_choice () {
|
||||||
echo "1: $1"
|
|
||||||
local PROMPT="$1"
|
local PROMPT="$1"
|
||||||
local -n OUTPUT_VAR="$2"
|
local -n OUTPUT_VAR="$2"
|
||||||
shift
|
shift 2
|
||||||
shift
|
|
||||||
local -a OPTIONS=( $@ )
|
local -a OPTIONS=( $@ )
|
||||||
|
|
||||||
select item in ${OPTIONS[@]} quit; do
|
select item in ${OPTIONS[@]} quit; do
|
||||||
@@ -124,9 +121,8 @@ get_disks DISKS
|
|||||||
get_choice "Which disk are you wanting to use? : " DISK "${DISKS[@]}"
|
get_choice "Which disk are you wanting to use? : " DISK "${DISKS[@]}"
|
||||||
|
|
||||||
# If the disk is a nvme drive
|
# If the disk is a nvme drive
|
||||||
if [[ "$DISK" =~ ^/dev/nvmen[0-9]$ ]]
|
if [[ "$DISK" =~ ^/dev/nvmen[0-9]$ ]]; then
|
||||||
DISK_BASE=${DISK}p
|
DISK_BASE=${DISK}p
|
||||||
|
|
||||||
else
|
else
|
||||||
DISK_BASE="${DISK}"
|
DISK_BASE="${DISK}"
|
||||||
fi
|
fi
|
||||||
@@ -304,6 +300,9 @@ A program needed for privelege escalation. Basically to provide a user of an adm
|
|||||||
|
|
||||||
Installing it here because it is not installed by default. An alternative is doas, a utility to perform the same funciton.
|
Installing it here because it is not installed by default. An alternative is doas, a utility to perform the same funciton.
|
||||||
"
|
"
|
||||||
|
pacman -Sy archlinux-keyring
|
||||||
|
pacman-key --init
|
||||||
|
pacman-key --populate archlinux
|
||||||
pacstrap /mnt base linux linux-headers linux-firmware sudo
|
pacstrap /mnt base linux linux-headers linux-firmware sudo
|
||||||
|
|
||||||
## Setting up fstab
|
## Setting up fstab
|
||||||
|
@@ -64,6 +64,7 @@ do_emergency_email () {
|
|||||||
MAILSERVER=`dig $DOMAIN mx | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1`
|
MAILSERVER=`dig $DOMAIN mx | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1`
|
||||||
|
|
||||||
## Setting up coprocess to send commands to telnet session coproc TELNET { telnet $MAILSERVER 25; }
|
## Setting up coprocess to send commands to telnet session coproc TELNET { telnet $MAILSERVER 25; }
|
||||||
|
coproc TELNET { telnet $MAILSERVER 25; }
|
||||||
|
|
||||||
## Commands to send email manually
|
## Commands to send email manually
|
||||||
local -a commands=(
|
local -a commands=(
|
||||||
|
@@ -50,8 +50,56 @@ DATE_REGEX='[0-9]{4}-[0-9]{2}-[0-9]{2}'
|
|||||||
# END: Variables
|
# END: Variables
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# BEGIN: Helper Functions
|
||||||
|
|
||||||
|
function handle_logs() {
|
||||||
|
cd $LOG_DIR
|
||||||
|
echo "Began Handling logs at: $(date)"
|
||||||
|
local ARCHIVE_FILE=archive.tar.gz
|
||||||
|
local ARCHIVE_FILE_UNZIPED=${ARCHIVE_FILE%.gz}
|
||||||
|
|
||||||
|
if [[ -f $ARCHIVE_FILE ]]; then
|
||||||
|
## Decompressing archive in case it exists
|
||||||
|
gunzip $ARCHIVE_FILE 2>/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
## Getting all files
|
||||||
|
local FILES=( $( ls -1tr *.log ) )
|
||||||
|
if [[ ${#FILES[@]} -le $LIMIT ]]; then
|
||||||
|
echo "Only had ${#FILES[@]} logs, and did not exceed $LIMIT. Not handling logs"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
## Getting files we are keeping
|
||||||
|
local FILES_TO_KEEP=${FILES[@]: -$LIMIT}
|
||||||
|
|
||||||
|
## Creating REGEX filter
|
||||||
|
FILES_TO_KEEP=${FILES_TO_KEEP//[[:space:]]/|}
|
||||||
|
|
||||||
|
## Filtering out logs to keep
|
||||||
|
local FILES_TO_ARCHIVE=( $( ls -1 *.log | grep -Ev "(${FILES_TO_KEEP})" ) )
|
||||||
|
|
||||||
|
echo "Adding archived logs to archive"
|
||||||
|
## Updating archive
|
||||||
|
tar uvf $ARCHIVE_FILE_UNZIPED ${FILES_TO_ARCHIVE[@]}
|
||||||
|
|
||||||
|
## Compressing Archive
|
||||||
|
echo "Compressing Archive"
|
||||||
|
gzip $ARCHIVE_FILE_UNZIPED
|
||||||
|
|
||||||
|
## Removing archived logs
|
||||||
|
echo "Removing archived files"
|
||||||
|
rm -vf ${FILES_TO_ARCHIVE[@]}
|
||||||
|
echo "Finished Handling logs at: $(date)"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# END: Helper Functions
|
||||||
|
|
||||||
# BEGIN: Pre-Work Checks
|
# BEGIN: Pre-Work Checks
|
||||||
|
|
||||||
|
## Setting up the script to direct all output to the log file for this snapshot session
|
||||||
exec > $LOG_FILE
|
exec > $LOG_FILE
|
||||||
|
|
||||||
## This will check to make sure that the log directory has been created, if not it will create it
|
## This will check to make sure that the log directory has been created, if not it will create it
|
||||||
@@ -60,7 +108,6 @@ exec > $LOG_FILE
|
|||||||
echo "$LOG_DIR did not exist. Creating"
|
echo "$LOG_DIR did not exist. Creating"
|
||||||
}
|
}
|
||||||
|
|
||||||
## Setting up the script to direct all output to the log file for this snapshot session
|
|
||||||
|
|
||||||
|
|
||||||
# END: Pre-Work Checks
|
# END: Pre-Work Checks
|
||||||
@@ -104,8 +151,15 @@ for SUBVOL_INFO in ${SUBVOLS[@]}; do
|
|||||||
|
|
||||||
SNAPSHOT=$SUBVOL_BACKUP_DIR/$DATE
|
SNAPSHOT=$SUBVOL_BACKUP_DIR/$DATE
|
||||||
## If the snapshot doesn't already exist, then create a new read-only snapshot
|
## If the snapshot doesn't already exist, then create a new read-only snapshot
|
||||||
[[ ! -d $SNAPSHOT ]] && /usr/sbin/btrfs subvol snapshot -r $DIR $SNAPSHOT
|
if [[ ! -d $SNAPSHOT ]]; then
|
||||||
|
/usr/sbin/btrfs subvol snapshot -r $DIR $SNAPSHOT
|
||||||
|
else
|
||||||
|
echo "$SNAPSHOT already existed. Not backing up"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
handle_logs
|
||||||
|
|
||||||
echo "Finishing backup at `date`"
|
echo "Finishing backup at `date`"
|
||||||
|
|
||||||
# END: Work
|
# END: Work
|
||||||
|
@@ -1,5 +1,49 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
######################################################################################
|
||||||
|
# install-discord-linux.sh #
|
||||||
|
######################################################################################
|
||||||
|
# Description # #
|
||||||
|
############### #
|
||||||
|
# #
|
||||||
|
# This script was created to automate the install of discord on your system. #
|
||||||
|
# It installs it separately from a package manager (snap, apt, dnf, etc), so this #
|
||||||
|
# can be used to install it on any linux system regardless of distro #
|
||||||
|
# as long as the OS & processor supports it. #
|
||||||
|
# #
|
||||||
|
# This script was originally just setup to handle installing or updating the #
|
||||||
|
# existing installation. It can be setup in crontab to handle it automatically so #
|
||||||
|
# you never have to manually do it again. All you have to do is add it to your #
|
||||||
|
# crontab to run daily or hourly (assuming you have a cron service installed) #
|
||||||
|
# #
|
||||||
|
# EX: #
|
||||||
|
# """ #
|
||||||
|
# CRONTAB="$(crontab -l)" #
|
||||||
|
# if [[ $? -eq 0 ]]; then #
|
||||||
|
# CRONTAB+="\n0 0 * * * /path/to/script.sh" #
|
||||||
|
# echo -e "$CRONTAB" | crontab - #
|
||||||
|
# else #
|
||||||
|
# echo "0 0 * * * /path/to/script.sh" | crontab - #
|
||||||
|
# fi #
|
||||||
|
# """ #
|
||||||
|
# #
|
||||||
|
# Eventually I am wanting this script to also provide additional functionalities: #
|
||||||
|
# - Install BetterDiscord #
|
||||||
|
# - Handle multiple installations of discord (makes named config directories #
|
||||||
|
# and will symlink them based on what "profile" you want to use). This will also #
|
||||||
|
# allow you to have a installation that contains mods and others without. #
|
||||||
|
# - Handle manual configurations of discord (where applicable) #
|
||||||
|
# #
|
||||||
|
######################################################################################
|
||||||
|
# Dependencies # #
|
||||||
|
################ #
|
||||||
|
# #
|
||||||
|
# 1) curl #
|
||||||
|
# 2) bash (of course) #
|
||||||
|
# #
|
||||||
|
######################################################################################
|
||||||
|
|
||||||
# BEGIN: Variables
|
# BEGIN: Variables
|
||||||
|
|
||||||
DEBUG=1
|
DEBUG=1
|
||||||
@@ -7,13 +51,16 @@ ACTION=""
|
|||||||
DOWNLOAD_URL='https://discord.com/api/download/stable?platform=linux&format=tar.gz'
|
DOWNLOAD_URL='https://discord.com/api/download/stable?platform=linux&format=tar.gz'
|
||||||
VERSION_REGEX='[0-9]+\.[0-9]+\.[0-9]+'
|
VERSION_REGEX='[0-9]+\.[0-9]+\.[0-9]+'
|
||||||
INSTALL_DIR=~/.opt
|
INSTALL_DIR=~/.opt
|
||||||
|
[[ ! -d $INSTALL_DIR ]] && mkdir -p $INSTALL_DIR
|
||||||
|
LOCAL_APPLICATION_DIR=~/.local/share/applications
|
||||||
EXISTING_INSTALL=$INSTALL_DIR/Discord
|
EXISTING_INSTALL=$INSTALL_DIR/Discord
|
||||||
BUILD_FILE=$EXISTING_INSTALL/resources/build_info.json
|
BUILD_FILE=$EXISTING_INSTALL/resources/build_info.json
|
||||||
DESKTOP_FILE=$EXISTING_INSTALL/discord.desktop
|
DESKTOP_FILE=$EXISTING_INSTALL/discord.desktop
|
||||||
|
INSTALLED_DESKTOP_FILE=$LOCAL_APPLICATION_DIR/discord.desktop
|
||||||
PACKAGE_DOWNLOAD_URL_BASE='https://dl.discordapp.net/apps/linux/{VERSION}/discord-{VERSION}.tar.gz'
|
PACKAGE_DOWNLOAD_URL_BASE='https://dl.discordapp.net/apps/linux/{VERSION}/discord-{VERSION}.tar.gz'
|
||||||
ICON_DIR=~/.icons
|
ICON_DIR=~/.local/share/icons
|
||||||
DESKTOP_FILE_INSTALLED=0
|
DESKTOP_FILE_NEEDS_UPDATE=0
|
||||||
[[ -f /usr/share/applications/discord.desktop ]] && DESKTOP_FILE_INSTALLED=1
|
REMOVE_AFTER_INSTALL=1
|
||||||
|
|
||||||
# END: Variables
|
# END: Variables
|
||||||
|
|
||||||
@@ -21,7 +68,9 @@ DESKTOP_FILE_INSTALLED=0
|
|||||||
# BEGIN: Helper Functions
|
# BEGIN: Helper Functions
|
||||||
|
|
||||||
function log () {
|
function log () {
|
||||||
if [[ $DEBUG -eq 1 ]]; then local DATE=`date` local MESSAGE="${1:?"log: Message not provided"}"
|
if [[ $DEBUG -eq 1 ]]; then
|
||||||
|
local DATE=`date`
|
||||||
|
local MESSAGE="${1:?"log: Message not provided"}"
|
||||||
echo "$DATE : $MESSAGE"
|
echo "$DATE : $MESSAGE"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -55,10 +104,10 @@ function do_download(){
|
|||||||
## Getting filename from url
|
## Getting filename from url
|
||||||
### Removing all characters from the last / back to leave only the filename
|
### Removing all characters from the last / back to leave only the filename
|
||||||
FILENAME="${PACKAGE_DOWNLOAD_URL/*\/}"
|
FILENAME="${PACKAGE_DOWNLOAD_URL/*\/}"
|
||||||
log "File was downloaded as $FILENAME"
|
|
||||||
|
|
||||||
## Downloading the discord package (tar.gz)
|
## Downloading the discord package (tar.gz)
|
||||||
curl "$PACKAGE_DOWNLOAD_URL" -o "$FILENAME" >/dev/null 2>&1
|
curl "$PACKAGE_DOWNLOAD_URL" -o "$FILENAME"
|
||||||
|
log "File was downloaded as $FILENAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_desktop_file() {
|
function update_desktop_file() {
|
||||||
@@ -90,6 +139,12 @@ function update_desktop_file() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function remove_installer () {
|
||||||
|
if [[ $REMOVE_AFTER_INSTALL -eq 1 ]]; then
|
||||||
|
rm -f $FILENAME
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function do_install() {
|
function do_install() {
|
||||||
|
|
||||||
cd "$INSTALL_DIR"
|
cd "$INSTALL_DIR"
|
||||||
@@ -107,20 +162,10 @@ function do_install() {
|
|||||||
|
|
||||||
update_desktop_file
|
update_desktop_file
|
||||||
|
|
||||||
## If your icon dir (configured above) exists in the env variable
|
|
||||||
if [[ "$XDG_DATA_DIRS" != *$ICON_DIR* ]]; then
|
|
||||||
export XDG_DATA_DIRS=$XDG_DATA_DIRS:$ICON_DIR
|
|
||||||
if [[ $SHELL == *bash ]]; then
|
|
||||||
echo 'export XDG_DATA_DIRS=$XDG_DATA_DIRS':$ICON_DIR > ~/.bashrc
|
|
||||||
else
|
|
||||||
echo 'export XDG_DATA_DIRS=$XDG_DATA_DIRS':$ICON_DIR > ~/.profile
|
|
||||||
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
[[ ! -d $ICON_DIR ]] && mkdir -p $ICON_DIR
|
[[ ! -d $ICON_DIR ]] && mkdir -p $ICON_DIR
|
||||||
cp $EXISTING_INSTALL/discord.png $ICON_DIR/
|
cp $EXISTING_INSTALL/discord.png $ICON_DIR/
|
||||||
sudo desktop-file-isntall $DESKTOP_FILE
|
|
||||||
|
remove_installer
|
||||||
}
|
}
|
||||||
|
|
||||||
function do_upgrade(){
|
function do_upgrade(){
|
||||||
@@ -136,9 +181,7 @@ function do_upgrade(){
|
|||||||
|
|
||||||
update_desktop_file
|
update_desktop_file
|
||||||
|
|
||||||
if [[ $DESKTOP_FILE_INSTALLED -eq 0 ]]; then
|
remove_installer
|
||||||
sudo desktop-file-install $DESKTOP_FILE
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# END: Helper Functions
|
# END: Helper Functions
|
||||||
@@ -197,3 +240,32 @@ esac
|
|||||||
|
|
||||||
|
|
||||||
# END: Work
|
# END: Work
|
||||||
|
|
||||||
|
|
||||||
|
# BEGIN: End Work Check
|
||||||
|
|
||||||
|
## If discord isn't already setup, go ahead and mark it for install/update
|
||||||
|
if [[ ! -f $INSTALLED_DESKTOP_FILE ]]; then
|
||||||
|
log "Desktop file not found in the local applications dir ($LOCAL_APPLICATION_DIR) installing now"
|
||||||
|
DESKTOP_FILE_NEEDS_UPDATE=1
|
||||||
|
|
||||||
|
else
|
||||||
|
# If there is a change for any reason update it
|
||||||
|
if [[ "$(<$DESKTOP_FILE)" != "$(<$INSTALLED_DESKTOP_FILE)" ]]; then
|
||||||
|
log "Desktop file for new version of discord has changed. Updating the existing installation"
|
||||||
|
DESKTOP_FILE_NEEDS_UPDATE=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $DESKTOP_FILE_NEEDS_UPDATE -eq 1 ]]; then
|
||||||
|
log "Updating/Installing desktop file"
|
||||||
|
desktop-file-install --dir=$LOCAL_APPLICATION_DIR $DESKTOP_FILE
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
log "There was an issue with installtion"
|
||||||
|
else
|
||||||
|
log "Desktop file was successfully installed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# END: End Work Check
|
||||||
|
Reference in New Issue
Block a user