scripts/ssh_tools/multiping.sh

51 lines
1.2 KiB
Bash
Raw Normal View History

2013-04-29 22:43:41 +02:00
#!/bin/sh
#
# multiping.sh, Copyright © 2013, 2019 Matteo Cypriani <mcy@lm7.fr>
# (Formerly named cluster-ping.sh)
2013-04-29 22:43:41 +02:00
#
# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.
#
# Ping a list of remote hosts using fping.
#set -x
set -u
readonly EXIT_USAGE=127
readonly EXIT_DEPENDENCY=4
readonly EXIT_HOSTS_LIST=6
err()
{
printf 'Error! ' >&2
printf '%s\n' "$@" >&2
}
# Check arguments
2013-04-29 22:43:41 +02:00
if [ $# -ne 1 ] ; then
echo "Usage: $0 <hosts_list>" >&2
exit $EXIT_USAGE
2013-04-29 22:43:41 +02:00
fi
FPING=$(command -v fping)
if [ -z "$FPING" ] ; then
err "fping is required for this script to work."
exit $EXIT_DEPENDENCY
fi
# Hosts list file
[ -z ${XDG_CONFIG_HOME+x} ] && XDG_CONFIG_HOME="$HOME/.config"
HOSTS="$XDG_CONFIG_HOME/ssh_tools/$1.lst"
echo "Using file '$HOSTS' as hosts list."
if [ ! -f "$HOSTS" ] ; then
err "The hosts list file doesn't exist or is not a regular file."
exit $EXIT_HOSTS_LIST
fi
2013-04-29 22:43:41 +02:00
# Go!
# shellcheck disable=SC2046
exec "$FPING" $(cat "$HOSTS") 2>/dev/null