#! /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 ] && [ -f $1 ]); then
	FN=$1
else
	echo "no file <$1>"
	exit 1
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 Copy $FN. Continue [N/y]
read yn
if [ -z "$yn" ]; then
	yn="n"
fi
if [ $yn != "y" ] && [ $yn != "Y" ]; then
	echo "User break"
	exit 0
fi

LOGDIR=/server/upgrade/cp-logdir
mkdir $LOGDIR &> /dev/null
logn=`basename $0`
logn=`echo $logn | cut -f1 -d"."`
logf=$LOGDIR/log.$logn

DT=`date +%d/%m/%Y`
if [ $IPfile ]; then
	echo $DT copy $FN | tee $logf
else
	echo $DT copy $FN | tee -a $logf
fi

cp_to_serv() {
	echo $1
	IP=`echo $1 | cut -d":" -f1`
	PORT=`echo $1 | cut -s -d":" -f2`
	if [ -z $PORT ]; then
		PORT=22
	fi
	scp -p -P $PORT $SSHOPT $FN adisadmin@$IP:$FN
	if [ $? != 0 ]; then
		echo "$1 did not do $0" | tee -a $logf
		return 1
	fi
	echo "$1 ok" | tee -a $logf
	return 0
}

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