Enviado em 24/08/2015 - 11:51h
Olá, pessoas.
Eu precisei montar um script para que o usuário pudesse montar as unidades por conta própria, no caso de falha de montagem das unidades de rede durante a inicialização do sistema, então fiz o seguinte:
O código ficou assim:
Bom, já que esse script é pequeno e não consome recurso de máquina, até tudo bem deixá-lo assim, mas se eu me deparar com algum código que precise de desempenho e que tenha alguma situação parecida, gostaria de saber alguma forma de fazer isso menos "gambiarristicamente".
Alguém tem alguma ideia? Obrigado.
Eu precisei montar um script para que o usuário pudesse montar as unidades por conta própria, no caso de falha de montagem das unidades de rede durante a inicialização do sistema, então fiz o seguinte:
#!/bin/bashAté aí, tudo bem, pois nesse primeiro computador, só era utilizada uma unidade de rede. Mas no computador seguinte, onde o usuário tinha três unidades de rede, para não repetir o código, procurei como criar uma matriz bidimensional no shellscript. Descobri que não tem como, mas há algumas formas de "simular" uma no improviso, então utilizei uma array associativa para simular a minha matriz bidimensional.
red=`tput setaf 1`
green=`tput setaf 2`
blue=`tput setaf 4`
reset=`tput sgr0`
mount="/mnt/pasta01"
if grep -qs "$mount" /proc/mounts; then
echo "${green}Unidade F: já está funcionando!${reset}"
else
echo "${blue}Montando unidade F: ...${reset}"
mount "$mount"
if [ $? -eq 0 ]; then
echo "${green}Unidade F: montada com sucesso!${reset}"
else
echo "${red}Ocorreu um erro ao montar a unidade F:. Favor entrar em contato com o departamento de TI.${reset}"
fi
fi
sleep 4
killall gnome-terminal
O código ficou assim:
#!/bin/bashCaso alguém se pergunte, estou associando letras de unidade do Windows aos caminhos de montagem no Linux devido a ter um ambiente misto de Windows e Linux na empresa e precisar que os usuários conversem na mesma língua.
red=`tput setaf 1`
green=`tput setaf 2`
blue=`tput setaf 4`
reset=`tput sgr0`
declare -A montagem
montagem[0,0]="F:"
montagem[0,1]="/mnt/pasta01"
montagem[1,0]="I:"
montagem[1,1]="/mnt/iso9001"
montagem[2,0]="J:"
montagem[2,1]="/mnt/transportes"
for i in {0..2}; do #percorre a "matriz"
if grep -qs "${montagem[$i,1]}" /proc/mounts; then
echo "${green}Unidade ${montagem[$i,0]} já está funcionando!${reset}"
else
echo "${blue}Montando unidade ${montagem[$i,0]} ...${reset}"
mount "${montagem[$i,1]}"
if [ $? -eq 0 ]; then
echo "${green}Unidade ${montagem[$i,0]} montada com sucesso!${reset}"
else
echo "${red}Ocorreu um erro ao montar a unidade ${montagem[$i,0]}. Favor entrar em contato com o TI.${reset}"
fi
fi
done
sleep 4
killall gnome-terminal
Bom, já que esse script é pequeno e não consome recurso de máquina, até tudo bem deixá-lo assim, mas se eu me deparar com algum código que precise de desempenho e que tenha alguma situação parecida, gostaria de saber alguma forma de fazer isso menos "gambiarristicamente".
Alguém tem alguma ideia? Obrigado.