
How I delay code execution in Bash until a remote host is responding
I have recently been working on some code that needs to run on a remote host using SSH. I describe this in my article, Using tar and ssh for backups.
But now I need to reboot the remote computer and wait until it has completely rebooted and the network is up and running. Only after that occurs can I continue sending commands to that remote system.
This little bit of code accomplishes that for me.
Host="f41vm"
X=1
until [ $X -eq 0 ] ; do
sleep 10s
ping -c1 $Host
X=$?
done
# The rest of the code is executed starting here,
# when the ping is successful and
# returns 0 instead of 1.
The X=$? statement takes the return code of the ping command ( $?_ ) and sets the $X variable to that value. Then $X can be used in the until statement comparison expression.
I add the sleep command so I’m not sending a Bazzillion pings to the remote host, and 10 seconds seems to work well enough for most of my purposes.
More Stories
Cyndi: My open source story — Linux, the loyal friend
Editor's note: Cyndi is my yoga teacher and the coauthor of our book, "Linux for Small Business Owners." This article...
How to remove a stuck kernel from GRUB
Here’s how to fix the GRUB menu configuration from the command line.
How to selectively apply updates
Here’s how I selectively apply updates, excluding any kernel packages.
Straight quotes from pandoc
Change pandoc’s curly quotes into straight quotes with this script.
Viewing PDF documents in console mode
I have a Raspberry Pi 3 that’s sat unused for the last few years. I used to run the Raspberry...