Alguns de vocês provavelmente têm dado pela minha falta (ok, não tanto pela minha falta, mas sim pela falta de posts no WebTuga). Pois bem, tenho andado um pouco ocupado a brincar com a linguagem bash.
Já tinha tido o prazer de brincar com esta linguagem à alguns anos, depois foi-me leccionado no 12º do Curso Tecnológico de Informática (coisa pouca) e este fim de semana tentei fazer algo de útil para o meu dia a dia.
Trata-se nada mais nada menos do que um pequeno script que permite gerir gameservers, neste caso limitado ao Counter-Strike 1.6, mas que poderá ser adaptado a outros tipos de servidores e completado, pois ainda são necessárias algumas configurações antes da sua utilização.
Deverá criar antes de mais um utilizador chamado “cs”, que terá como shell a “/bin/bash” e “/home/cs/” como home. Lá dentro deverá ter também uma pasta chamada “server” com uma instalação por defeito do motor counter-strike 1.6 steam.
O código não está nada de mais e pode ainda ter algumas falhas. No entanto, peço a quem melhor perceber da línguagem que faça uma revisão e caso alguém faça alguma modificação ao código, deixo aqui o meu incentivo a partilhar aqui connosco.
Aqui vai o código:
Olá,
Fiz umas alterações: uma função nunca deve chamar-se a si própria, resolvi isso. Melhorei as validações com ciclos. A única coisa a melhorar é verificar se a password de root é correcta.
Código:
#!/bin/bash
# CONFIGURADOR DE GAMESERVERS WEBTUGA by cenourinha
Principal() {
clear
echo “=================================”
echo ” _”
echo ” | | _”
echo ” _ _ _ _____| |__ _| |_ _ _ ____ _____”
echo “| | | | ___ | _ (_ _) | | |/ _ (____ |”
echo “| | | | ____| |_) )| |_| |_| ( (_| / ___ |”
echo ” \___/|_____)____/ \__)____/ \___ \_____|”
echo ” (_____|”
echo “=================================”
echo “CONFIGURADOR DE GAMESERVERS WEBTUGA”
echo “————————————————- by cenourinha”
erro=0
until [ $erro -eq 1 ]; do
echo “Opções:”
echo
echo “1. Iniciar servidor”
echo “2. Parar servidor”
echo “3. Fazer Update ao servidor”
echo “4. Criar cliente”
echo “5. Sair”
echo
echo -n “Qual a opção desejada? ”
read opcao
echo
case $opcao in
1) Iniciar ;;
2) Parar ;;
3) Update ;;
4) CriarCliente ;;
5) clear; echo “Até logo!”; sleep 3s; clear; exit ;;
*) erro=1; echo “Opção desconhecida.”; echo;;
esac
erro=0
done
}
Iniciar() {
clear
echo -n “Iniciar uma GameServer”
echo
sleep 1s
clear
echo “Qual o cliente (username)?”
read user
clear
echo “Qual o nome do servidor?”
read nomeservidor
clear
echo Qual a porta?
read porta
clear
slots=0
while [ $slots -lt 12 ]; do
echo “Quantas slots? (minimo 12 slots)”
read slots
done
clear
erro=1
while [ $erro -eq 1 ]; do
echo “Qual o mapa?”
echo “1. de_dust2”
echo “2. de_dust”
echo “3. cs_assault”
read mapa
case $mapa in
1)
erro=0; mapa=”de_dust2″;;
2)
erro=0; mapa=”de_dust”;;
3)
mapa=”cs_assault”; erro=0 ;;
*) erro=1; clear; echo “Opção desconhecida.”;;
esac
done
clear
cd /home/cs/$user
screen -r $user -X quit
screen -dmS $user ./hlds_run -game cstrike +ip 81.92.204.166 +port $porta +maxplayers $slots +exec server.cfg +map $mapa +hostname “$nomeservidor”
echo Servidor iniciado com sucesso!
}
Parar() {
clear
echo “Qual o cliente(username)?”
read user
clear
echo -n “Tem a certeza? [y/n] ”
read var
if [ $var = “y” ]; then
screen -wipe
screen -r $user -X quit
clear
echo “Server parado com sucesso!”
sleep 2s
elif [ $var = “n” ]; then
Principal
fi
Principal
}
CriarCliente() {
clear
echo “Criar cliente”
sleep 1s
clear
echo “Qual username?”
read username
clear
echo “Qual a password?”
read password
clear
echo “Insira a password root”
su –command=”useradd -d /home/cs/$username -s /usr/bin/rc -p $password -G cs -m -k /home/cs/server/ $username; chmod 777 /home/cs/$username; exit;” –
echo $username
clear
echo “Cliente criado com sucesso.”
sleep 2s
Principal
}
Update() {
clear
echo “Qual o cliente(username)? ”
read user
clear
echo “A actualizar…”
./steam -command update -game cstrike -dir /home/$USER/$user
sleep 3s
echo “Actualizado com sucesso…”
clear
}
Principal
@Nuno
Obrigado pela distribuição.