initial commit
This commit is contained in:
80
daily-review.sh
Normal file
80
daily-review.sh
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DOM=$(date +%e | tr -d ' ')
|
||||||
|
ROW=$((DOM + 1))
|
||||||
|
MONTH=$(date +%m | sed 's/^0*//')
|
||||||
|
COLUMN=$((MONTH + 1))
|
||||||
|
|
||||||
|
BASE_PATH=""
|
||||||
|
WEEK_LOG="$BASE_PATH/$(date +%Y)/$(date +%B)/$(date +%V).org"
|
||||||
|
|
||||||
|
F_OVERALL="$BASE_PATH/daily-review-overall.csv"
|
||||||
|
F_PHYSICALLY="$BASE_PATH/daily-review-physically.csv"
|
||||||
|
F_MENTALLY="$BASE_PATH/daily-review-mentally.csv"
|
||||||
|
F_WALK="$BASE_PATH/daily-review-walk.csv"
|
||||||
|
F_EXERCISE="$BASE_PATH/daily-review-exercise.csv"
|
||||||
|
|
||||||
|
V_OVERALL=0
|
||||||
|
V_PHYSICALLY=0
|
||||||
|
V_MENTALLY=0
|
||||||
|
V_WALK=0
|
||||||
|
V_EXERCISE=0
|
||||||
|
|
||||||
|
verify_paths(){
|
||||||
|
if [ ! -d "$BASE_PATH/$(date +%Y)/$(date +%B)" ]; then
|
||||||
|
mkdir -p "$BASE_PATH/$(date +%Y)/$(date +%B)"
|
||||||
|
fi
|
||||||
|
if [ ! -f "$WEEK_LOG" ]; then
|
||||||
|
touch "$WEEK_LOG"
|
||||||
|
cat >> "$WEEK_LOG" << EOF
|
||||||
|
#-*- mode: org -*-
|
||||||
|
#+STARTUP: showall
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ask_questions(){
|
||||||
|
echo "Answer the following questions with the values from this table:"
|
||||||
|
echo -e "#### Legend ####\n# 5 | Amazing #\n# 4 | Good #\n# 3 | Average #\n# 2 | Bad #\n# 1 | Terrible #\n################"
|
||||||
|
read -p "How are you feeling today physically? " V_PHYSICALLY
|
||||||
|
read -p "How are you feeling today mentally? " V_MENTALLY
|
||||||
|
read -p "How was today overall? " V_OVERALL
|
||||||
|
echo
|
||||||
|
echo "Answer the following questions with 1 (yes) or 0 (no)."
|
||||||
|
read -p "Did you go for a walk today? " V_WALK
|
||||||
|
read -p "Did you exercise today? " V_EXERCISE
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_paths
|
||||||
|
ask_questions
|
||||||
|
|
||||||
|
awk -v row="$ROW" -v col="$COLUMN" -v new_value="$V_OVERALL" -F, \
|
||||||
|
'BEGIN {OFS=","} NR==row {$col=new_value} 1' \
|
||||||
|
"$F_OVERALL" > temp.csv && mv temp.csv "$F_OVERALL"
|
||||||
|
|
||||||
|
awk -v row="$ROW" -v col="$COLUMN" -v new_value="$V_PHYSICALLY" -F, \
|
||||||
|
'BEGIN {OFS=","} NR==row {$col=new_value} 1' \
|
||||||
|
"$F_PHYSICALLY" > temp.csv && mv temp.csv "$F_PHYSICALLY"
|
||||||
|
|
||||||
|
awk -v row="$ROW" -v col="$COLUMN" -v new_value="$V_MENTALLY" -F, \
|
||||||
|
'BEGIN {OFS=","} NR==row {$col=new_value} 1' \
|
||||||
|
"$F_MENTALLY" > temp.csv && mv temp.csv "$F_MENTALLY"
|
||||||
|
|
||||||
|
awk -v row="$ROW" -v col="$COLUMN" -v new_value="$V_WALK" -F, \
|
||||||
|
'BEGIN {OFS=","} NR==row {$col=new_value} 1' \
|
||||||
|
"$F_WALK" > temp.csv && mv temp.csv "$F_WALK"
|
||||||
|
|
||||||
|
awk -v row="$ROW" -v col="$COLUMN" -v new_value="$V_EXERCISE" -F, \
|
||||||
|
'BEGIN {OFS=","} NR==row {$col=new_value} 1' \
|
||||||
|
"$F_EXERCISE" > temp.csv && mv temp.csv "$F_EXERCISE"
|
||||||
|
|
||||||
|
cat >> "$WEEK_LOG" << EOF
|
||||||
|
|
||||||
|
* $(date +%A), $( date +"%d. %m. %Y")
|
||||||
|
** Zdravstveno stanje
|
||||||
|
** Psihično počutje
|
||||||
|
** Stanje v službi
|
||||||
|
** Kaj sem danes naredil?
|
||||||
|
EOF
|
||||||
|
|
||||||
|
emacs -nw "$WEEK_LOG"
|
||||||
65
fail2ban-abuseipdb-check.sh
Normal file
65
fail2ban-abuseipdb-check.sh
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
api_key=""
|
||||||
|
|
||||||
|
get_abuseConfidenceScore(){
|
||||||
|
score=$(curl -s -G https://api.abuseipdb.com/api/v2/check \
|
||||||
|
--data-urlencode "ipAddress=$1" \
|
||||||
|
-d maxAgeInDays=90 \
|
||||||
|
-d verbose \
|
||||||
|
-H "Key: $api_key" \
|
||||||
|
-H "Accept: application/json" | jq .data.abuseConfidenceScore)
|
||||||
|
echo "$score"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Checking /var/log/fail2ban.log for found IP addresses..."
|
||||||
|
|
||||||
|
ip_list=$(grep Found /var/log/fail2ban.log | awk '{print $8;}' | uniq)
|
||||||
|
|
||||||
|
blocked=()
|
||||||
|
not_blocked_unsafe=()
|
||||||
|
not_blocked_safe=()
|
||||||
|
|
||||||
|
for ip in $(echo "$ip_list"); do
|
||||||
|
if grep -q "$ip" /etc/csf/csf.deny; then
|
||||||
|
blocked+=("$ip");
|
||||||
|
echo -e "${YELLOW}IP $ip is already blocked!${NC}"
|
||||||
|
else
|
||||||
|
echo "Getting abuse score for IP: $ip..."
|
||||||
|
abuse_score=$(get_abuseConfidenceScore $ip)
|
||||||
|
if [[ $abuse_score -gt 75 ]]; then
|
||||||
|
not_blocked_unsafe+=("$ip")
|
||||||
|
echo -e "${RED}IP $ip is unsafe and not yet blocked!${NC}"
|
||||||
|
else
|
||||||
|
not_blocked_safe+=("$ip")
|
||||||
|
echo -e "${GREEN}IP $ip is safe!${NC}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
IFS=','
|
||||||
|
echo "###################################"
|
||||||
|
echo "# State of found addresses in CSF #"
|
||||||
|
echo "###################################"
|
||||||
|
echo "Blocked: ${blocked[*]}"
|
||||||
|
echo -e "${RED}Not blocked and unsafe: ${not_blocked_unsafe[*]}${NC}"
|
||||||
|
echo -e "${GREEN}Not blocked and safe: ${not_blocked_safe[*]}${NC}"
|
||||||
|
unset IFS
|
||||||
|
if [[ ! -z ${not_blocked_unsafe[*]} ]]; then
|
||||||
|
echo
|
||||||
|
echo "#######################"
|
||||||
|
echo "# Gotta Block 'Em All #"
|
||||||
|
echo "#######################"
|
||||||
|
echo "If you want to block the unsafe addresses above, use:"
|
||||||
|
for ip in ${not_blocked_unsafe[@]}; do
|
||||||
|
echo "csf -d $ip"
|
||||||
|
done
|
||||||
|
fi
|
||||||
58
pve-netbox-diff.sh
Normal file
58
pve-netbox-diff.sh
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
#set -e
|
||||||
|
|
||||||
|
NETBOX_URL=""
|
||||||
|
NETBOX_AUTH_TOKEN=""
|
||||||
|
MAILTO=""
|
||||||
|
SUBJECT="PVE and NetBox mismatch"
|
||||||
|
|
||||||
|
curl -s -X GET "$NETBOX_URL/api/virtualization/virtual-machines/" \
|
||||||
|
-H "Authorization: Token $NETBOX_AUTH_TOKEN" \
|
||||||
|
-H 'Accept: application/json' | \
|
||||||
|
jq -r '
|
||||||
|
[
|
||||||
|
.results[] |
|
||||||
|
{
|
||||||
|
VMID: .custom_fields.VMID,
|
||||||
|
status: (.status.value |
|
||||||
|
gsub("active"; "running") |
|
||||||
|
gsub("offline"; "stopped")),
|
||||||
|
name: .name
|
||||||
|
}
|
||||||
|
] |
|
||||||
|
sort_by(.VMID) |
|
||||||
|
map([.VMID, .status, .name]) |
|
||||||
|
(["VMID", "Status", "Name"]) as $header |
|
||||||
|
$header, .[] |
|
||||||
|
@csv' | \
|
||||||
|
tr -d '"' > /tmp/netbox-status.csv
|
||||||
|
|
||||||
|
/usr/sbin/pct list | awk 'NR==1 {print "VMID,Status,Name"} NR>1 {print $1","$2","$3}' > /tmp/pve-status.csv
|
||||||
|
/usr/sbin/qm list | awk 'NR>1 {print $1","$3","$2}' OFS="," >> /tmp/pve-status.csv
|
||||||
|
|
||||||
|
diff -C 0 /tmp/pve-status.csv /tmp/netbox-status.csv > /tmp/diff_result.txt
|
||||||
|
EXIT_STATUS=$?
|
||||||
|
|
||||||
|
if [ $EXIT_STATUS -eq 1 ]; then
|
||||||
|
for host in $(diff -C 0 /tmp/pve-status.csv /tmp/netbox-status.csv | grep '^- ' | awk -F ',' '{sub(/^- /, ""); print $1; }'); do
|
||||||
|
if [[ ${host:0:1} -eq 1 ]]; then
|
||||||
|
echo "Resources for $host:" >> /tmp/new-host-resources.txt
|
||||||
|
/usr/sbin/pct config $host | grep -E '^hostname|^cores|^memory|^rootfs|^net' >> /tmp/new-host-resources.txt
|
||||||
|
echo >> /tmp/new-host-resources.txt
|
||||||
|
elif [[ ${host:0:1} -eq 2 ]]; then
|
||||||
|
echo "Resources for $host:" >> /tmp/new-host-resources.txt
|
||||||
|
/usr/sbin/qm config $host | grep -E '^name|^cores|^memory|^scsi[0-9]|^net' >> /tmp/new-host-resources.txt
|
||||||
|
echo >> /tmp/new-host-resources.txt
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -f /tmp/new-host-resources.txt ]; then
|
||||||
|
awk 'FNR==1 && NR!=1 {print ""; print "Here is a list of hosts missing from NetBox together with their information:"}; {print}' /tmp/diff_result.txt /tmp/new-host-resources.txt > /tmp/mail.txt
|
||||||
|
else
|
||||||
|
cp /tmp/diff_result.txt /tmp/mail.txt
|
||||||
|
fi
|
||||||
|
mail -s "$SUBJECT" "$MAILTO" < /tmp/mail.txt
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f /tmp/pve-status.csv /tmp/netbox-status.csv /tmp/diff_result.txt /tmp/new-host-resources.txt /tmp/mail.txt
|
||||||
62
zola-deploy.sh
Executable file
62
zola-deploy.sh
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
dev_server=""
|
||||||
|
prod_server=""
|
||||||
|
websites=("")
|
||||||
|
active_website=""
|
||||||
|
path_match=0
|
||||||
|
|
||||||
|
not_git(){
|
||||||
|
echo "You are not in a git repository!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
get_git_branch(){
|
||||||
|
gitBranch=$(git rev-parse --abbrev-ref HEAD 2> /dev/null) || not_git
|
||||||
|
}
|
||||||
|
|
||||||
|
check_path_match(){
|
||||||
|
for website in "${websites[@]}"; do
|
||||||
|
if [[ $cwd == *$website* ]]; then
|
||||||
|
path_match=1
|
||||||
|
active_website=$website
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
zola_deploy(){
|
||||||
|
cwd=$(pwd)
|
||||||
|
check_path_match
|
||||||
|
if [[ $path_match == 1 ]]; then
|
||||||
|
if [[ $gitBranch == "main" ]]; then
|
||||||
|
cd "$(git rev-parse --show-toplevel)"
|
||||||
|
production_deploy_alert
|
||||||
|
zola build
|
||||||
|
rsync -r --delete --chown=www-data:www-data ./public/ $prod_server:/srv/http/$active_website
|
||||||
|
elif [[ $gitBranch == "dev" ]]; then
|
||||||
|
cd "$(git rev-parse --show-toplevel)"
|
||||||
|
zola --config config.dev.toml build --drafts
|
||||||
|
rsync -r --delete ./public/ $dev_server:/var/www/dev.$active_website
|
||||||
|
else
|
||||||
|
echo "Not on a correct branch (must be either dev or main)!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Not a known website!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
production_deploy_alert(){
|
||||||
|
read -p "Deploying to production! Are you sure? (y/N):" -s -n 1 -r
|
||||||
|
echo
|
||||||
|
case $REPLY in
|
||||||
|
[Yy]) echo "Okay! Here we go!";;
|
||||||
|
*) echo "See ya!"; exit 1;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
get_git_branch
|
||||||
|
zola_deploy
|
||||||
Reference in New Issue
Block a user