2.6 KiB
Your First Bash Script
Time to build your first Bash script. We'll create a script to monitor server status, including:
- Disk usage
- CPU load
- RAM usage (Memory)
- TCP connections
- Kernel version
Customize as needed.
Script Setup
First, create your script file, status.sh:
touch status.sh
Open status.sh with your text editor. Start with the shebang, #!/usr/bin/env bash. This tells the system how to execute the script.
Add initial comments for clarity:
#!/usr/bin/env bash
# Script to report current server status.
Variables
Variables store data. Assign values using = (no spaces). Use $() for command substitution.
Capture the server's hostname:
server_name=$(hostname)
Echo the variable to see its value:
echo "${server_name}"
Functions
Functions group commands for reuse. Let's create one for memory usage:
function memory_check() {
echo ""
echo "Memory usage on ${server_name}: "
free -h
echo ""
}
This function prints a message and calls free -h for memory details. Call it by name (no parentheses):
memory_check
Before seeing the complete solution, try implementing functions for:
- Disk usage
- CPU load
- TCP connections
- Kernel version
Google commands if needed. There are multiple valid approaches.
The Complete Script
Here's the full status.sh script:
#!/usr/bin/env bash
##
# Server status script:
# - Memory usage
# - CPU load
# - TCP connections
# - Kernel version
##
server_name=$(hostname)
function memory_check() {
echo ""
echo "Memory usage on ${server_name}: "
free -h
echo ""
}
function cpu_check() {
echo ""
echo "CPU load on ${server_name}: "
echo ""
uptime
echo ""
}
function tcp_check() {
echo ""
echo "TCP connections on ${server_name}: "
echo ""
cat /proc/net/tcp | wc -l
echo ""
}
function kernel_check() {
echo ""
echo "Kernel version on ${server_name}: "
echo ""
uname -r
echo ""
}
function all_checks() {
memory_check
cpu_check
tcp_check
kernel_check
}
all_checks
Save status.sh, then make it executable and run:
chmod +x status.sh
./status.sh
Conclusion
Bash scripting combines Linux commands to automate routine tasks, freeing you for more impactful work. This basic script demonstrates the power of automation.
{notice} This content was inspired by a piece by softwareshinobi on Dev Team Six.