diff --git a/devops-bash-toolkit-assessment/README.md b/devops-bash-toolkit-assessment/README.md new file mode 100644 index 0000000..e69de29 diff --git a/devops-bash-toolkit-assessment/backup.log b/devops-bash-toolkit-assessment/backup.log new file mode 100644 index 0000000..45996f7 --- /dev/null +++ b/devops-bash-toolkit-assessment/backup.log @@ -0,0 +1,2 @@ +Sat Apr 4 23:28:06 WAT 2026 - Backup created: backups/backup_20260404_232805.tar.gz +Sat Apr 4 23:28:49 WAT 2026 - Backup created: backups/backup_20260404_232849.tar.gz diff --git a/devops-bash-toolkit-assessment/backups/backup_20260404_232805.tar.gz b/devops-bash-toolkit-assessment/backups/backup_20260404_232805.tar.gz new file mode 100644 index 0000000..d612ef4 Binary files /dev/null and b/devops-bash-toolkit-assessment/backups/backup_20260404_232805.tar.gz differ diff --git a/devops-bash-toolkit-assessment/backups/backup_20260404_232849.tar.gz b/devops-bash-toolkit-assessment/backups/backup_20260404_232849.tar.gz new file mode 100644 index 0000000..767c46d Binary files /dev/null and b/devops-bash-toolkit-assessment/backups/backup_20260404_232849.tar.gz differ diff --git a/devops-bash-toolkit-assessment/logs/app.log b/devops-bash-toolkit-assessment/logs/app.log new file mode 100644 index 0000000..70dc145 --- /dev/null +++ b/devops-bash-toolkit-assessment/logs/app.log @@ -0,0 +1,7 @@ +2026-04-04 23:28:04 - Running all scripts... +2026-04-04 23:28:06 - Completed running all scripts +2026-04-04 23:28:45 - Running system check... +2026-04-04 23:28:45 - system_check.sh completed successfully +2026-04-04 23:28:49 - Running backup... +2026-04-04 23:28:49 - backup.sh completed successfully +2026-04-04 23:28:52 - Exiting run_all.sh diff --git a/devops-bash-toolkit-assessment/logs/system_report_2026-04-04.log b/devops-bash-toolkit-assessment/logs/system_report_2026-04-04.log new file mode 100644 index 0000000..ed1b3ae --- /dev/null +++ b/devops-bash-toolkit-assessment/logs/system_report_2026-04-04.log @@ -0,0 +1,62 @@ + Disk usage +Filesystem Size Used Avail Use% Mounted on +none 1.9G 0 1.9G 0% /usr/lib/modules/6.6.87.2-microsoft-standard-WSL2 +none 1.9G 4.0K 1.9G 1% /mnt/wsl +drivers 238G 80G 159G 34% /usr/lib/wsl/drivers +/dev/sdd 1007G 2.3G 954G 1% / +none 1.9G 464K 1.9G 1% /mnt/wslg +none 1.9G 0 1.9G 0% /usr/lib/wsl/lib +rootfs 1.9G 2.7M 1.9G 1% /init +none 1.9G 488K 1.9G 1% /run +none 1.9G 0 1.9G 0% /run/lock +none 1.9G 0 1.9G 0% /run/shm +none 1.9G 76K 1.9G 1% /mnt/wslg/versions.txt +none 1.9G 76K 1.9G 1% /mnt/wslg/doc +C:\ 238G 80G 159G 34% /mnt/c +tmpfs 386M 8.0K 386M 1% /run/user/1000 + Memory usage + total used free shared buff/cache available +Mem: 3857 343 3386 3 127 3382 +Swap: 1024 0 1024 + CPU load (uptime) + 23:28:05 up 2 days, 9:45, 1 user, load average: 0.00, 0.05, 0.13 +Disk usage is within limit + Total running Processes +34 +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 315 0.0 0.5 107172 21248 ? Ssl Apr02 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal +root 4249 0.0 0.5 293040 19968 ? Ssl Apr02 0:04 /usr/libexec/packagekitd +root 256 0.0 0.4 30184 18816 ? Ss Apr02 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers +root 4464 1.3 0.3 64156 14412 ? S/dev/null | tail -n +6 | +while read file; do + rm "$file" + echo "$(date) - Deleted old backup: $file" | tee -a "$LOG_FILE" +done diff --git a/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_113402.tar.gz b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_113402.tar.gz new file mode 100644 index 0000000..7ceedfa Binary files /dev/null and b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_113402.tar.gz differ diff --git a/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_145044.tar.gz b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_145044.tar.gz new file mode 100644 index 0000000..becd04a Binary files /dev/null and b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_145044.tar.gz differ diff --git a/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_145325.tar.gz b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_145325.tar.gz new file mode 100644 index 0000000..8b0d4b0 Binary files /dev/null and b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_145325.tar.gz differ diff --git a/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_165302.tar.gz b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_165302.tar.gz new file mode 100644 index 0000000..b735f09 Binary files /dev/null and b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_165302.tar.gz differ diff --git a/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_165320.tar.gz b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_165320.tar.gz new file mode 100644 index 0000000..3c61b16 Binary files /dev/null and b/devops-bash-toolkit-assessment/scripts/backups/backup_20260402_165320.tar.gz differ diff --git a/devops-bash-toolkit-assessment/scripts/file_manager.sh b/devops-bash-toolkit-assessment/scripts/file_manager.sh new file mode 100755 index 0000000..7c9673d --- /dev/null +++ b/devops-bash-toolkit-assessment/scripts/file_manager.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +# Support the following commands: create, delete, list, rename. +LOG_DIR="logs" +mkdir -p "$LOG_DIR" +LOG_FILE="$LOG_DIR/file_manager.log" +Filename="file.txt" +Filename1="filenew.txt" +case "$1" in + create) + if [[ -e "$Filename" ]] ; then + echo "File already exist" | tee -a "$LOG_FILE" + else + touch "$Filename" + echo "Created $Filename" | tee -a "$LOG_FILE" + fi + ;; + delete) + if [[ -e "$Filename" ]] ; then + rm "$Filename" + echo "Deleted $Filename" | tee -a "$LOG_FILE" + fi + ;; + list) + ls + echo "listed files" | tee -a "$LOG_FILE" + ;; + rename) + Filename="file.txt" + Filename1="filenew.txt" + touch "$Filename" | tee -a "$LOG_FILE" + if [[ ! -e $Filename ]] ; then + echo "file does not exist" + elif [[ -e $Filename1 ]] ; then + echo "File already exists. Cannot overwrite." | tee -a "$LOG_FILE" + else + mv "$Filename" "$Filename1" + echo "Renamed $Filename to $Filename1" | tee -a "$LOG_FILE" + fi + ;; + *) + echo "Usage: $0 {create|delete|list|rename} [filename] [newname]" + ;; +esac + + diff --git a/devops-bash-toolkit-assessment/scripts/filenew.txt b/devops-bash-toolkit-assessment/scripts/filenew.txt new file mode 100644 index 0000000..e69de29 diff --git a/devops-bash-toolkit-assessment/scripts/logs/file_manager.log b/devops-bash-toolkit-assessment/scripts/logs/file_manager.log new file mode 100644 index 0000000..94701d5 --- /dev/null +++ b/devops-bash-toolkit-assessment/scripts/logs/file_manager.log @@ -0,0 +1,4 @@ +Created file.txt +Deleted file.txt +listed files +Renamed file.txt to filenew.txt diff --git a/devops-bash-toolkit-assessment/scripts/logs/system_report_ b/devops-bash-toolkit-assessment/scripts/logs/system_report_ new file mode 100644 index 0000000..8252784 --- /dev/null +++ b/devops-bash-toolkit-assessment/scripts/logs/system_report_ @@ -0,0 +1,36 @@ + Disk usage + Memory usage + CPU load (uptime) +Disk usage is within limit + Total running Processes + Disk usage +Filesystem Size Used Avail Use% Mounted on +none 1.9G 0 1.9G 0% /usr/lib/modules/6.6.87.2-microsoft-standard-WSL2 +none 1.9G 4.0K 1.9G 1% /mnt/wsl +drivers 238G 73G 166G 31% /usr/lib/wsl/drivers +/dev/sdd 1007G 2.3G 954G 1% / +none 1.9G 140K 1.9G 1% /mnt/wslg +none 1.9G 0 1.9G 0% /usr/lib/wsl/lib +rootfs 1.9G 2.7M 1.9G 1% /init +none 1.9G 492K 1.9G 1% /run +none 1.9G 0 1.9G 0% /run/lock +none 1.9G 0 1.9G 0% /run/shm +none 1.9G 76K 1.9G 1% /mnt/wslg/versions.txt +none 1.9G 76K 1.9G 1% /mnt/wslg/doc +C:\ 238G 73G 166G 31% /mnt/c +tmpfs 386M 8.0K 386M 1% /run/user/1000 + Memory usage + total used free shared buff/cache available +Mem: 3857 312 3324 3 220 3403 +Swap: 1024 0 1024 + CPU load (uptime) + 14:49:40 up 13:01, 1 user, load average: 0.06, 0.03, 0.05 +Disk usage is within limit + Total running Processes +35 +USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 315 0.0 0.5 107172 21248 ? Ssl 01:48 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal +root 4249 0.0 0.5 293040 19968 ? Ssl 04:31 0:01 /usr/libexec/packagekitd +root 256 0.0 0.4 30184 18816 ? Ss 01:48 0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers +root 4464 1.3 0.3 64080 14420 ? S /dev/null; then + echo "$(date) - $PROCESS_NAME is Running" | tee -a "$LOG_FILE" + else + echo "$(date) - $PROCESS_NAME is Stopped" | tee -a "$LOG_FILE" + + # Simulate restart + systemctl restart "$PROCESS_NAME" 2>/dev/null + + if pgrep -x "$PROCESS_NAME" > /dev/null; then + echo "$(date) - $PROCESS_NAME Restarted successfully" | tee -a "$LOG_FILE" + else + echo "$(date) - $PROCESS_NAME Restart failed (or simulated)" | tee -a "$LOG_FILE" + fi + fi +} +for service in "${services[@]}"; do + check_process "$service" +done + diff --git a/devops-bash-toolkit-assessment/scripts/system_check.sh b/devops-bash-toolkit-assessment/scripts/system_check.sh new file mode 100755 index 0000000..6ec0eaa --- /dev/null +++ b/devops-bash-toolkit-assessment/scripts/system_check.sh @@ -0,0 +1,29 @@ +#!/bin/bash +LOG_DIR="logs" +mkdir -p "$LOG_DIR" +Date=$(date +%F) +LOG_FILE=logs/system_report_$Date.log +# Display: Disk usage (df -h), Memory usage (free -m), CPU load (uptime) +echo "===== System Report: =====" + +threshold=80 +Usage=$(df / | awk 'NR==2 {print $5}' | tr -d '%') +echo " Disk usage " | tee -a "$LOG_FILE" +df -h | tee -a "$LOG_FILE" +echo " Memory usage " | tee -a "$LOG_FILE" +free -m | tee -a "$LOG_FILE" +echo " CPU load (uptime) " | tee -a "$LOG_FILE" +uptime | tee -a "$LOG_FILE" +# Warn if disk usage exceeds 80% +if [[ $Usage -gt $threshold ]] ; then + echo "Warning : Disk usage exceeds 80%" | tee -a "$LOG_FILE" +else + echo "Disk usage is within limit" | tee -a "$LOG_FILE" +fi +# Count total running processes + echo " Total running Processes " | tee -a "$LOG_FILE" +ps -e | wc -l | tee -a "$LOG_FILE" + +# Top 5 memory-consuming processes +echo " Top 5 memory-consuming processes " +ps aux --sort=-%mem | head -n 6 | tee -a "$LOG_FILE" diff --git a/devops-bash-toolkit-assessment/scripts/user_info.sh b/devops-bash-toolkit-assessment/scripts/user_info.sh new file mode 100755 index 0000000..cbcf04e --- /dev/null +++ b/devops-bash-toolkit-assessment/scripts/user_info.sh @@ -0,0 +1,32 @@ +#!/bin/bash +LOG_DIR="logs" +mkdir -p "$LOG_DIR" +LOG_FILE="$LOG_DIR/user_info.log" + +# Prompt the user for: Name, Age, Country +read -p "What is your Name: " Name +read -p "What is your Age: " Age +read -p "What is your Country: " Country +# Validate inputs +if [[ -z "$Name" || -z "$Age" || -z "$Country" ]]; then + echo "All fields are required." | tee -a "$LOG_FILE" + exit 1 +fi +# Validate: Age must be numeric +if ! [[ $Age =~ ^[0-9]+$ ]] ; then + echo "Age must be numeric" | tee -a "$LOG_FILE" + exit 1 +fi +# Output: A greeting message +echo "Welcome on board, $Name from $Country, aged $Age. Nice to meet you!" | tee -a "$LOG_FILE" +# Age category +if (( Age < 18 )); then + echo "Minor (<18)" | tee -a "$LOG_FILE" +elif (( Age >= 18 && Age <= 65 )); then + echo "Adult (18–65)" | tee -a "$LOG_FILE" +else + echo "Senior (65+)" | tee -a "$LOG_FILE" +fi + + +