Skip to content

Instantly share code, notes, and snippets.

@mubbashir
Created February 16, 2018 00:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mubbashir/5ed2da424d672a6215e76ccf37ea72fb to your computer and use it in GitHub Desktop.
Save mubbashir/5ed2da424d672a6215e76ccf37ea72fb to your computer and use it in GitHub Desktop.
bash waiting for files to appear on multiple hosts
#!/bin/sh
await_file_received()
{
printf "===> checking the number of raw files on all workstations...\n"
fileHOST=`find /files/dict -type f | wc -l`
file_REMOTE_HOST_1=`ssh uesr@${REMOTE_HOST_1} "find /files/dict -type f | wc -l"`
file_REMOTE_HOST_2=`uesr@${REMOTE_HOST_2} "find /files/dict -type f | wc -l"`
## Calculating diff using bc for details read `man bc`
diff_HOST_REMOTE_1=`echo ${fileHOST} - ${file_REMOTE_HOST_1} | bc`
diff_HOST_REMOTE_2=`echo ${fileHOST} - ${file_REMOTE_HOST_2} | bc`
printf "===> fileHOST: ${fileHOST} file_REMOTE_HOST_1:${file_REMOTE_HOST_1} file_REMOTE_HOST_2:${file_REMOTE_HOST_2} ...\n"
printf "===> diff_HOST_REMOTE_2: ${diff_HOST_REMOTE_2} diff_HOST_REMOTE_1:${diff_HOST_REMOTE_1} ...\n"
SLEEP=300
while [ $SLEEP -gt 0 ] && [ $diff_HOST_REMOTE_2 -gt 0 ] && [ $diff_HOST_REMOTE_1 -gt 0 ];
do
printf "waiting $SLEEP more seconds for diff_HOST_REMOTE_2: ${diff_HOST_REMOTE_2} diff_HOST_REMOTE_1:${diff_HOST_REMOTE_1} to be zero ...\n"
sleep 10;
file_REMOTE_HOST_1=`ssh uesr@${REMOTE_HOST_1} "find /files/dict -type f | wc -l"`
file_REMOTE_HOST_2=`uesr@${REMOTE_HOST_2} "find /files/dict -type f | wc -l"`
diff_HOST_REMOTE_1=`echo ${fileHOST} - ${file_REMOTE_HOST_1} | bc`
diff_HOST_REMOTE_2=`echo ${fileHOST} - ${file_REMOTE_HOST_2} | bc`
SLEEP=`echo "$SLEEP - 10" | bc`
done
}
## Calling await_file_received
await_file_received
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment