#! /bin/bash
# Проверка рабочих станций командой из первого параметра
# Второй параметр: имя файла со списком ip адресов или конкретный ip-адрес
# Без второго параметра: используется имя файла /server/ip.txt
SSHOPT="-o GSSAPIAuthentication=no -o ConnectTimeout=3 -o PreferredAuthentications=publickey -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR"

if [ "$1" = "ver" ]; then
	cmd="/server/bin/clntlist /home/adis/exe | cut -d [ -f2 | cut -d ] -f1 | sed '/ /d'"
elif [ "$1" = "seg" ]; then
cmd="sudo gzip -a -c -d /var/log/messages.4.gz 2> /dev/null | grep -a segfault;\
	sudo gzip -a -c -d /var/log/messages.3.gz 2> /dev/null | grep -a segfault;\
	sudo gzip -a -c -d /var/log/messages.2.gz 2> /dev/null | grep -a segfault;\
	sudo grep -a -h segfault /var/log/messages.1 2> /dev/null;\
	sudo grep -a -h segfault /var/log/messages-* 2> /dev/null;\
	sudo grep -a -h segfault /var/log/messages 2> /dev/null;"
elif [ "$1" ]; then
	cmd="$1"
else
	cmd="cat /etc/os-release | grep PRETTY | cut -d'\"' -f2"
fi

if [ ! $2 ]; then
	IPfile=/server/ip.txt
	IPaddr=
elif echo "$2" | egrep -q '^\-?[0-9]'; then 
	IPfile=
	IPaddr=$2
else
	IPfile=$2
	IPaddr=
fi

if [ $IPfile ]; then
	if [ ! -f $IPfile ]; then
		echo "No file $IPfile"
		exit 1
	fi
	cat $IPfile
else
	echo $IPaddr
fi

echo "$cmd      Continue? [N/y]"
read yn
if [ -z "$yn" ]; then
	yn="n"
fi
if [ $yn != "y" ] && [ $yn != "Y" ]; then
	echo "User break"
	exit 0
fi

do_cmd() {
	echo $1
	IP=`echo $1 | cut -d":" -f1`
	PORT=`echo $1 | cut -s -d":" -f2`
	if [ -z $PORT ]; then
		PORT=22
	fi
	ssh -q -t -p $PORT $SSHOPT adisadmin@$IP "$cmd"
	if [ $? != 0 ]; then
		echo Unavailable
	fi
	return 0
}

echo "-------------------------"
if [ $IPfile ]; then
	for ip in `cat $IPfile`; do
		if [ `echo $ip | cut -b 1` == "#" ]; then
			echo "$ip Skipped"
		else
			do_cmd $ip
		fi
		echo "-------------------------"
	done
else
	do_cmd $IPaddr
	echo "-------------------------"
fi
