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
Update on my Oldest Computer
Something interesting happened today that I decided to write about. Not that I don't find interesting things to write about...
Why I Installed Fedora Server on My Primary Workstation — and How
Customizing a Fedora system from a minimal command line only installation.
Saving Public Library Computers With Linux Mint MATE
I was volunteering at the local public library, where I find myself frequently these days. The library has some older...
Why I Didn’t Convert My Primary Workstation to BtrFS
When I started writing this series about the BtrFS filesystem, I fully intended to migrate my primary workstation from EXT4...
Converting to BtrFS — Episode 5
The previous step in conversion of my main test computer from EXT4 filesystems on a Logical Volume Manager (LVM) base,...