# 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`: ```bash 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: ```bash #!/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: ```bash server_name=$(hostname) ``` Echo the variable to see its value: ```bash echo "${server_name}" ``` ### Functions Functions group commands for reuse. Let's create one for memory usage: ```bash 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): ```bash 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: ```bash #!/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: ```bash 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.