I have 5 Solaris servers present across different locations. Sometimes some of these servers are not reachable from my location due to various reasons (either because of network problems or the server itself goes down suddenly).
So I would like to write a Bash shell script to check wether they are reachable. What I have tried is:
ssh ipaddress "uname -a"
Password less authentication is set. If I don't get any any output I will generate a mail.
The ping command is a simple network utility command-line tool in Linux. It's a handy tool for quickly checking a host's network connectivity. It works by sending an ICMP message ECHO_REQUEST to the target host. If the host reply with ECHO_REPLY, then we can safely conclude that the host is available.
First, open the terminal window and then type: uptime command – Tell how long the Linux system has been running. w command – Show who is logged on and what they are doing including the uptime of a Linux box. top command – Display Linux server processes and display system Uptime in Linux too.
The most barebones check you can do is probably to use netcat
to check for open ports.
to check for SSH (port 22) reachability, you can do
if nc -z $server 22 2>/dev/null; then
echo "$server ✓"
else
echo "$server ✗"
fi
from the manpage:
-z
Specifies that nc should just scan for listening daemons, without sending any data to them.
Your ssh command will test for more than if the server is reachable - for it to work, the ssh server must be running, and everything must be right with authentication.
To just see if the servers are up, how about just a simple ping?
ping -c1 -W1 $ip_addr && echo 'server is up' || echo 'server is down'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With