Always see some sort of automove talk on here, so here is a simple automove that works well and i have been using on my server for months, modified quiet a bit to be usable by anyone.  
-- automove redone.
function et_InitGame(levelTime,randomSeed,restart)
	et.RegisterModname("^1D^0Ri Team Balance")
	players = { }
	players[0] = 0 --all
	players[1] = 0 --axis
	players[2] = 0 --allies
	players[3] = 0 --spectators
end
function et_Obituary(client, killer, death)
	axiskilled = 0
	allieskilled = 0
	count2 = 0
	player_name2 = GetPlayerName(client)
	local game_state = tonumber(et.trap_Cvar_Get("gamestate"))
	local player_team = et.gentity_get(client, "sess.SessionTeam")
	if game_state ~= 1 and game_state ~= 2 then
	players[0] = 0 --all
	players[1] = 0 --axis
	players[2] = 0 --allies
	players[3] = 0 --spectators
	for i = 0, tonumber(et.trap_Cvar_Get("sv_maxclients")) -1, 1 do
	local teamnumber = tonumber(et.gentity_get(i,"sess.sessionTeam"))
	if et.gentity_get(i,"pers.connected") == 2 then
		players[0] = players[0] + 1
		players[teamnumber] = players[teamnumber] + 1
	end
	
end
	if (( (players[1] - players[2]) > 1 and player_team == 1 ) or ( (players[2] - players[1]) > 1 and player_team == 2 )) then
		
		if player_team == 1 then
			axiskilled = 1
		else
			allieskilled = 1
		end
		
		et.trap_SendServerCommand(-1, "chat \"^3Automoving " .. player_name2 .. " ^3as teams were uneven... \"")
		
		end
	end
	return nil
end
function et_RunFrame()
	if axiskilled == 1 then
		delayaxis()
	elseif allieskilled == 1 then
		delayallies()
	end
end
function delayaxis()
count2 = count2 + 1
	if count2 >= 5 then --every 5 deaths move the next player that dies
		et.trap_SendConsoleCommand( et.EXEC_APPEND, "putteam " .. player_name2 .. " b")
		count2 = 0
		axiskilled = 0
	end
end
function delayallies()
count2 = count2 + 1
	if count2 >= 5 then--every 5 deaths move the next player that dies
		et.trap_SendConsoleCommand( et.EXEC_APPEND, "putteam " .. player_name2 .. " r")
		count2 = 0
		allieskilled = 0
	end
end
 
function GetPlayerName(client)
	return et.Q_CleanStr(et.gentity_get(client, "pers.netname"))
end
function et_ShutdownGame(restart)
end