What if your network could tell you it's sick before you even notice?
Why Network monitoring script in Bash Scripting? - Purpose & Use Cases
Imagine you are responsible for keeping your office internet running smoothly. Every hour, you open a web page or ping a server manually to check if the network is up. You write down the results on paper or in a text file.
This manual checking is slow and boring. You might forget to check on time or make mistakes writing down results. If the network goes down at night or when you are away, you won't know until someone complains.
A network monitoring script automatically checks your network at set times. It records results, alerts you if something is wrong, and runs quietly in the background. This saves you time and catches problems early.
ping -c 4 192.168.1.1 # Manually check and note results
while true; do ping -c 1 192.168.1.1 > /dev/null && echo "Up" || echo "Down"; sleep 3600; done
It enables continuous, hands-free network health checks that catch issues before they become big problems.
A small business uses a network monitoring script to get instant alerts when their internet connection drops, so they can call their provider quickly and avoid losing customers.
Manual network checks are slow and unreliable.
Scripts automate checks and alert you instantly.
This keeps your network stable and your work stress-free.
Practice
ping?Solution
Step 1: Understand the role of
pingpingsends a small message to a device to see if it replies, showing if it is reachable.Step 2: Identify the script's goal
The script usespingto detect if devices respond, helping find network problems early.Final Answer:
To check if devices on the network are reachable -> Option DQuick Check:
Ping checks reachability = B [OK]
- Confusing ping with speed testing
- Thinking ping changes device settings
- Assuming ping installs software
Solution
Step 1: Recall the ping option for count
In Linux bash,-cspecifies the number of ping requests to send.Step 2: Verify the correct command format
ping -c 1 192.168.1.1sends exactly one ping to the IP address.Final Answer:
ping -c 1 192.168.1.1 -> Option CQuick Check:
Use -c for count in ping = D [OK]
- Using Windows ping options like -n in bash
- Incorrect option syntax like /c or -count
- Omitting the count option for single ping
if ping -c 1 8.8.8.8 > /dev/null; then echo "Host is reachable" else echo "Host is unreachable" fi
Solution
Step 1: Understand the ping command behavior
The commandping -c 1 8.8.8.8sends one ping to Google's DNS server, which is usually reachable.Step 2: Analyze the if condition and output
If ping succeeds, the script prints "Host is reachable"; otherwise, it prints "Host is unreachable".Final Answer:
Host is reachable -> Option AQuick Check:
Successful ping prints reachable = C [OK]
- Assuming ping always fails
- Confusing output redirection with errors
- Missing that output is suppressed with > /dev/null
for ip in 192.168.1.1 192.168.1.2
do
ping -c 1 $ip
if [ $? -eq 0 ]; then
echo "$ip is up"
else
echo "$ip is down"
fi
Solution
Step 1: Check for loop syntax completeness
The for loop starts withfor ip in ...but lacks the closingdonekeyword.Step 2: Confirm other parts are correct
The ping command and if condition use correct syntax and variable names.Final Answer:
Missing 'done' to close the for loop -> Option BQuick Check:
For loops need 'done' to end = A [OK]
- Forgetting 'done' after loops
- Using wrong ping options
- Using undefined variables
unreachable.log. Which snippet correctly does this?Solution
Step 1: Understand the goal
The script should log only unreachable IPs tounreachable.log.Step 2: Analyze each option
for ip in 192.168.1.1 192.168.1.2; do ping -c 1 $ip > /dev/null || echo "$ip unreachable" >> unreachable.log done usesping -c 1 $ip > /dev/null || echo "$ip unreachable" >> unreachable.log, which logs IPs only if ping fails (unreachable). for ip in 192.168.1.1 192.168.1.2; do if ping -c 1 $ip > /dev/null; then echo "$ip unreachable" >> unreachable.log fi done logs reachable IPs incorrectly. for ip in 192.168.1.1 192.168.1.2; do ping -c 1 $ip >> unreachable.log done logs all ping output, not just unreachable. for ip in 192.168.1.1 192.168.1.2; do ping -c 1 $ip || echo "$ip reachable" >> unreachable.log done logs reachable IPs as unreachable.Final Answer:
for ip in 192.168.1.1 192.168.1.2; do ping -c 1 $ip > /dev/null || echo "$ip unreachable" >> unreachable.log done -> Option AQuick Check:
Use '||' to log failures only = A [OK]
- Logging reachable IPs instead of unreachable
- Appending all ping output to log
- Using wrong conditional logic
Ready to prove it?
Pass the test and this pattern moves unknown
