Pular para o conteúdo

Converter permissões [RESOLVIDO]

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. Converter permissões [RESOLVIDO]

Enviado em 13/11/2012 - 13:55h

Fala galera
to com um problema aqui pra resolver, e to precisando de uma ajuda ai, se alguem pude rsrsr
preciso criar um script que converta permissões de octal para texto e vice versa
ai ta um exemplo de como acardito que tem que ser...
-------------
1 - Octal para Texto
2 - Texto para Octal
Escolha sua opção: 1
Digite o valor de uma permissão em modo octal: 777

Octal: 777
Texto: rwxrwxrwx
-------------
e isso é oque concegui
----------------------------
#!/bin/bash
echo " Escolha com opcao voce deseja (a ou b)
a) Octal para texto
b) Texto para octal "
read resp

if [ $resp == a ] ;then

#aqui que tenho que colocar as opções

elif [ $resp == b ] ;then

#aqui que tenho que colocar as opcoes
fi
-------------------------------

mais nao to conseguindo encontrar uma logica, se alguém puder da uma ajuda ai fico agradecido.
desde ja obrigado galera ...
Obrigado!!!

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Converte Permissões

Enviado em 13/11/2012 - 15:46h

Olá.

Postei um script shell com o titulo "Converte Permissões" aqui no VOL que faz o que você precisa.

Segue abaixo o fonte:

#!/bin/bash
#Autor radolpho 2012
echo " Escolha com opcao voce deseja (a ou b)
a) Octal para texto
b) Texto para octal "
read resp

if [ $resp == a ] ;then #Conversao de OCTAL para TEXTUAL
echo "Digite a permissao em OCTAL Ex. 776"
read poct

#Permissao de user
if [ ${poct:0:1} == 0 ] ;then
u="---"
elif [ ${poct:0:1} == 1 ] ;then
u="--x"
elif [ ${poct:0:1} == 2 ] ;then
u="-w-"
elif [ ${poct:0:1} == 3 ] ;then
u="-wx"
elif [ ${poct:0:1} == 4 ] ;then
u="r--"
elif [ ${poct:0:1} == 5 ] ;then
u="r-x"
elif [ ${poct:0:1} == 6 ] ;then
u="rw-"
elif [ ${poct:0:1} == 7 ] ;then
u="rwx"
fi

#Permissao de group
if [ ${poct:1:1} == 0 ] ;then
g="---"
elif [ ${poct:1:1} == 1 ] ;then
g="--x"
elif [ ${poct:1:1} == 2 ] ;then
g="-w-"
elif [ ${poct:1:1} == 3 ] ;then
g="-wx"
elif [ ${poct:1:1} == 4 ] ;then
g="r--"
elif [ ${poct:1:1} == 5 ] ;then
g="r-x"
elif [ ${poct:1:1} == 6 ] ;then
g="rw-"
elif [ ${poct:1:1} == 7 ] ;then
g="rwx"
fi


#Permissao de other
if [ ${poct:2:1} == 0 ] ;then
o="---"
elif [ ${poct:2:1} == 1 ] ;then
o="--x"
elif [ ${poct:2:1} == 2 ] ;then
o="-w-"
elif [ ${poct:2:1} == 3 ] ;then
o="-wx"
elif [ ${poct:2:1} == 4 ] ;then
o="r--"
elif [ ${poct:2:1} == 5 ] ;then
o="r-x"
elif [ ${poct:2:1} == 6 ] ;then
o="rw-"
elif [ ${poct:2:1} == 7 ] ;then
o="rwx"
fi

echo "Conversao de OCTAL para TEXTUAL\n"
echo $poct" >>>> "$u$g$o

elif [ $resp == b ] ;then #Conversao de TEXTUAL para OCTAL

echo "Digite a permissao em TEXTUAL Ex. rwxrw--w-"
read ptxt

#Permissao de user
if [ ${ptxt:0:3} == "---" ] ;then
u="0"
elif [ ${ptxt:0:3} == "--x" ] ;then
u="1"
elif [ ${ptxt:0:3} == "-w-" ] ;then
u="2"
elif [ ${ptxt:0:3} == "-wx" ] ;then
u="3"
elif [ ${ptxt:0:3} == "r--" ] ;then
u="4"
elif [ ${ptxt:0:3} == "r-x" ] ;then
u="5"
elif [ ${ptxt:0:3} == "rw-" ] ;then
u="6"
elif [ ${ptxt:0:3} == "rwx" ] ;then
u="7"
fi

#Permissao de group
if [ ${ptxt:3:3} == "---" ] ;then
g="0"
elif [ ${ptxt:3:3} == "--x" ] ;then
g="1"
elif [ ${ptxt:3:3} == "-w-" ] ;then
g="2"
elif [ ${ptxt:3:3} == "-wx" ] ;then
g="3"
elif [ ${ptxt:3:3} == "r--" ] ;then
g="4"
elif [ ${ptxt:3:3} == "r-x" ] ;then
g="5"
elif [ ${ptxt:3:3} == "rw-" ] ;then
g="6"
elif [ ${ptxt:3:3} == "rwx" ] ;then
g="7"
fi


#Permissao de other
if [ ${ptxt:6:3} == "---" ] ;then
o="0"
elif [ ${ptxt:6:3} == "--x" ] ;then
o="1"
elif [ ${ptxt:6:3} == "-w-" ] ;then
o="2"
elif [ ${ptxt:6:3} == "-wx" ] ;then
o="3"
elif [ ${ptxt:6:3} == "r--" ] ;then
o="4"
elif [ ${ptxt:6:3} == "r-x" ] ;then
o="5"
elif [ ${ptxt:6:3} == "rw-" ] ;then
o="6"
elif [ ${ptxt:6:3} == "rwx" ] ;then
o="7"
fi

echo "Conversao de TEXTUAL para OCTAL\n"
echo $ptxt" >>>> "$u$g$o

fi

3. Re: Converter permissões [RESOLVIDO]

Enviado em 14/11/2012 - 14:04h

Boa tarde rodholpo
funcionou perfeitamente,
mas antes de colocar como respondido gostaria de saber qual a função dos numeros
ex: :3:3
:0:1
:1:1

4. Re: Converter permissões [RESOLVIDO]

Enviado em 14/11/2012 - 18:16h

Certo. Eu tenho a variável $poct (ela vai receber a permissão que ue digitar). Digamos que eu digite 774.

Então $poct valerá 774.

Quando eu faço ${poct:2:1} estou dizendo para o script pegar '1' caractere[s] à partir da posição '2' da variável $poct. No exemplo acima é o digito '4'.

Entenda-se assim: ${variavel:Posicao:Tamanho} = Pega 'Tamanho' caracteres a partir da posição 'Posicao'.

Espero que tenha ficado claro.

Até mais.

5. Sugestões

Enviado em 15/11/2012 - 15:13h

Radolpho pense na possibilidade de refatorar seu script usando case ao invés de elif...
BOA SORTE!!!

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder