Script para montar unidades mais "elegante" [RESOLVIDO]

1. Script para montar unidades mais "elegante" [RESOLVIDO]

Wellington
wellington_r

(usa Debian)

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:

#!/bin/bash

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


Até 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.

O código ficou assim:

#!/bin/bash

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


Caso 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.

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.


  


2. Re: Script para montar unidades mais "elegante" [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 24/08/2015 - 16:30h

wellington_r escreveu:

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.


Automount?


3. Re: Script para montar unidades mais "elegante" [RESOLVIDO]

Wellington
wellington_r

(usa Debian)

Enviado em 24/08/2015 - 18:10h

paulo1205 escreveu:

wellington_r escreveu:

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.


Automount?


Você se refere a montagem automática pelo fstab?
Se sim, já está configurado para montar automaticamente, mas às vezes dá alguma falha de rede e não consegue montar, por isso estou criando esse script para deixar como atalho para o usuário.



4. Re: Script para montar unidades mais "elegante" [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 24/08/2015 - 18:38h

wellington_r escreveu:

Você se refere a montagem automática pelo fstab?
Se sim, já está configurado para montar automaticamente, mas às vezes dá alguma falha de rede e não consegue montar, por isso estou criando esse script para deixar como atalho para o usuário.


Não. Eu me refiro a montagem automática via automounter (o nome do pacote é autofs).


5. Re: Script para montar unidades mais "elegante" [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 24/08/2015 - 18:55h

Olá,


Se ja esta no Fstab, basta rodar o comando mount -a

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


6. Re: Script para montar unidades mais

Wellington
wellington_r

(usa Debian)

Enviado em 24/08/2015 - 21:21h

tonyhts escreveu:

Olá,


Se ja esta no Fstab, basta rodar o comando mount -a

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


Disso eu sei, mas o usuário não tem permissão pra isso. E mesmo se eu desse permissão para o usuário, isso é muito complicado pra um usuário comum.

Talvez o título da questão deu margem para má interpretação da minha dúvida. O que eu queria mesmo era só saber se naquele script específico havia como trocar a "matriz bidimensional" por algo mais "profissional".





7. Re: Script para montar unidades mais

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/08/2015 - 09:13h

wellington_r escreveu:

Talvez o título da questão deu margem para má interpretação da minha dúvida. O que eu queria mesmo era só saber se naquele script específico havia como trocar a "matriz bidimensional" por algo mais "profissional".


Algo na linha abaixo?

declare -A mnttab

mnttab[J:]="filer1:/vol1"
mnttab[K:]="filer2:/vol2"
mnttab[L:]="filer3:/vol3/subdir3"

for a in "${!mnttab[@]}"; do
echo "$a -- ${mnttab[$a]}"
done


Mas eu continuo achando que usar montagens automáticas é ainda mais elegante. O usuário quer aceder ao /K:? Ele simplesmente navega para o /K:, e o automounter o monta. Parou de usar por mais do que tantos minutos? O automounter vai lá e desmonta.


8. Re: Script para montar unidades mais "elegante" [RESOLVIDO]

Wellington
wellington_r

(usa Debian)

Enviado em 25/08/2015 - 11:46h

paulo1205 escreveu:

wellington_r escreveu:

Talvez o título da questão deu margem para má interpretação da minha dúvida. O que eu queria mesmo era só saber se naquele script específico havia como trocar a "matriz bidimensional" por algo mais "profissional".


Algo na linha abaixo?

declare -A mnttab

mnttab[J:]="filer1:/vol1"
mnttab[K:]="filer2:/vol2"
mnttab[L:]="filer3:/vol3/subdir3"

for a in "${!mnttab[@]}"; do
echo "$a -- ${mnttab[$a]}"
done


Mas eu continuo achando que usar montagens automáticas é ainda mais elegante. O usuário quer aceder ao /K:? Ele simplesmente navega para o /K:, e o automounter o monta. Parou de usar por mais do que tantos minutos? O automounter vai lá e desmonta.


Era isso que eu queria. Esse código ficou bem mais enxuto e simples. Obrigado por tirar essa dúvida de lógica.

Quanto ao automounter, eu desconhecia, mas vou dar uma pesquisada sobre ele. Obrigado por essa dica, também.











Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts