#!/bin/bash

function myssh() {
	echo '---------'

	expect -c "
set user root
set passwd UniflyClub2021
set remote_ip $ip
spawn ssh \$user@\$remote_ip
expect {
"assword" {set timeout 300; send \"\$passwd\r\"}

}
expect {
"root@*" {send \"
rm -rf restart.sh
wget http://82.156.35.109/script/restart.sh
sh restart.sh $update_war $server_name $war_name
rm -rf restart.sh
exit
\r\"}
}

        interact
"
}

function choose_server_war() {
	echo "选择服务"
	awk '{print NR":"$1 }' server_war.txt

	read -p "请输入服务序号(直接回车代表重启所有服务):" num
	echo -e "\n"
	if [ "$num" = "" ]; then
		echo "重启所有服务"
		read -p "请输入是否更新war包1代表更新其他键代表不更新(直接回车代表不更新war包):" update_war
	else
		server_name=$(awk 'NR=="'$num'"{print $1}' server_war.txt)

		read -p "请输入是否更新war包1代表更新其他键代表不更新(直接回车代表不更新war包):" update_war
		echo -e "\n"
			
		if [ "$update_war" = "1" ]; then
			
			echo "选择war包"

			awk 'NR=="'$num'"{for(i=2;i<=NF;++i) printf i-1 ":" $i "\n"}' server_war.txt

			read -p "请输入war序号(直接回车代表更新所有war):" war_num
			echo -e "\n"
			if [ "$war_num" = "" ]; then
				echo "更新所有war"
			else
				echo "更新指定war"
				let war_num+=1
				war_name=$(awk "NR=="$num"{print $"$war_num"}" server_war.txt)
				echo "$war_name"
			fi
		fi
		
	fi

	if [ "$update_war" = "" ]; then
		update_war=0
	fi

}

awk '{print NR":"$1" "$2 }' ips.txt

read -p "请输入服务器序号(直接回车代表更新所有服务器):" num
echo -e "\n"

if [ "$num" = "" ]; then
	echo "更新所有服务器"

	all=$(awk 'END{print NR}' ips.txt)

	for ((i = 1; i <= $all; i++)); do
		ip=$(awk 'NR=="'$i'"{print $1}' ips.txt)
		if [ "$ip" = "" ]; then
			continue
		fi
		name=$(awk 'NR=="'$i'"{print $2}' ips.txt)
		echo "重启服务器$name"
		sleep 1
		choose_server_war
		myssh

	done
	#cat ips.txt | while read line
	#do
	#
	#    ip=`echo "$line"|awk '{print $1}'`
	#    if [ "$ip" = "" ]
	#    then
	#      continue
	#    fi
	#   myssh

	# sleep 10
#done
else
	ip=$(awk 'NR=="'$num'"{print $1}' ips.txt)
	name=$(awk 'NR=="'$num'"{print $2}' ips.txt)
	echo "重启服务器$name"
	sleep 1

	choose_server_war
	myssh

fi
