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
Personal backups with ‘rsync’
Make backups of your personal data in case your laptop is lost, stolen, or damaged.
How to get a clean screen — on the command line
After some time using terminal sessions they can get a bit cluttered with previous commands and their output data streams....
How to do updates on the command line
Keeping your Linux computer as safe as possible from various types of cyber attacks is only possible if you perform...
The Linux Philosophy for SysAdmins, Tenet 18 —Find the simplicity
Author’s note: This article is excerpted in part from chapter 17 of my book, The Linux Philosophy for SysAdmins, with...
For a traditional Unix experience, try Crux Linux
The Linux operating system can be implemented in many ways, and these implementations can very generally be divided into "traditional"...
Empowering Everyone: Accessibility Features in LibreOffice
LibreOffice.org is my preferred productivity suite, and I've covered how I use it both as a graphical office suite and a terminal command in...