🌸 Initial commit — Midori's Linux Dojo
This commit is contained in:
113
🌸 Midori's Linux Dojo/Phase 6 - Automation/Exercises.md
Normal file
113
🌸 Midori's Linux Dojo/Phase 6 - Automation/Exercises.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# 🧪 Phase 6: Automation
|
||||
|
||||
> Goal: Real admin skills — scripting, cron, text processing
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Exercise 1 — Shell Scripting
|
||||
|
||||
```bash
|
||||
# Create a backup script
|
||||
cat > /root/lab/scripts/backup.sh << 'EOF'
|
||||
#!/bin/sh
|
||||
BACKUP_DIR="/root/backups/$(date +%Y%m%d)"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
tar -czf "$BACKUP_DIR/lab-backup.tar.gz" /root/lab/
|
||||
echo "Backup saved to $BACKUP_DIR"
|
||||
EOF
|
||||
|
||||
chmod +x /root/lab/scripts/backup.sh
|
||||
./root/lab/scripts/backup.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Exercise 2 — Variables & Loops
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
# Variables
|
||||
NAME="World"
|
||||
echo "Hello, $NAME!"
|
||||
|
||||
# For loop
|
||||
for i in 1 2 3 4 5; do
|
||||
echo "Count: $i"
|
||||
done
|
||||
|
||||
# While loop
|
||||
COUNT=0
|
||||
while [ $COUNT -lt 3 ]; do
|
||||
echo "Loop $COUNT"
|
||||
COUNT=$((COUNT + 1))
|
||||
done
|
||||
|
||||
# Conditionals
|
||||
if [ -f /root/hello.txt ]; then
|
||||
echo "File exists!"
|
||||
else
|
||||
echo "File not found"
|
||||
fi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Exercise 3 — Cron Jobs
|
||||
|
||||
```bash
|
||||
# Edit crontab
|
||||
crontab -e
|
||||
|
||||
# Add a job that runs every hour:
|
||||
0 * * * * /root/lab/scripts/backup.sh
|
||||
|
||||
# List cron jobs
|
||||
crontab -l
|
||||
|
||||
# Check cron logs
|
||||
cat /var/log/cron
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Exercise 4 — Text Processing with grep/awk/sed
|
||||
|
||||
```bash
|
||||
# grep — search
|
||||
grep "root" /etc/passwd
|
||||
grep -r "alpine" /etc/
|
||||
|
||||
# awk — column extraction
|
||||
awk -F: '{print $1, $6}' /etc/passwd
|
||||
df -h | awk '{print $5, $6}'
|
||||
|
||||
# sed — search & replace
|
||||
sed 's/root/admin/' /etc/passwd > /tmp/test.txt
|
||||
head -5 /tmp/test.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Final Project
|
||||
|
||||
Create a single script that **automates the entire setup** of both lab VMs:
|
||||
|
||||
```bash
|
||||
1. Installs and configures SSH
|
||||
2. Sets up static IPs
|
||||
3. Configures firewall rules
|
||||
4. Installs and starts a web server
|
||||
5. Sets up NFS share
|
||||
6. Creates users
|
||||
7. Schedules backups with cron
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Phase 6 Checklist
|
||||
- [ ] Shell scripts with variables, loops, conditionals
|
||||
- [ ] Cron jobs for automation
|
||||
- [ ] Text processing with grep/awk/sed
|
||||
- [ ] Final project: full automation script
|
||||
|
||||
**Previous:** [[Phase 5 - Server Stuff]]
|
||||
Reference in New Issue
Block a user