+ Responder ao Tópico



  1. #1

    Wink Shell script que monta partições no GNU/Linux

    galera boa noite , sou iniciante no linux preciso Desenvolve um Shell script chamado infosystem.sh que receba um parâmetro
    que é uma HD (Exemplo /dev/sda), Se o usuário informar uma HD que não existe (/dev/sdz por exemplo),
    exibir uma mensagem e abortar todo o processamento. Para verificar se
    existe, compare com o /proc/partitions.
    Como eu listo os tipos de partiçoes e faço a comparaçao , nao to conseguindo desenvolve isso.

    alguem pode me ajuda , obrigada http://forum.imasters.com.br/public/...ault/smile.png

  2. #2

    Padrão

    Citação Postado originalmente por daya Ver Post
    galera boa noite , sou iniciante no linux preciso Desenvolve um Shell script chamado infosystem.sh que receba um parâmetro
    que é uma HD (Exemplo /dev/sda), Se o usuário informar uma HD que não existe (/dev/sdz por exemplo),
    exibir uma mensagem e abortar todo o processamento. Para verificar se
    existe, compare com o /proc/partitions.
    Como eu listo os tipos de partiçoes e faço a comparaçao , nao to conseguindo desenvolve isso.

    alguem pode me ajuda , obrigada
    Bem-vinda ao Under-Linux

    Vou dar umas dicas, mas, por enquanto, não o código pronto.

    O propósito de /proc/partitions não é mostrar os discos rígidos, e sim a informação de alocação de partições. Logo, não é adequadamente correto o uso deste pseudo-arquivo-dispositivo para sua necessidade. O uso de /proc/partitions está diretamente relacionado com /proc/devices.

    Para listar seus discos, precisa do seguinte comando:

    Código :
    lsblk -io KNAME,TYPE

    Usando grep, você filtra só pelo que for disco rígido:

    Código :
    lsblk -io KNAME,TYPE | grep disk

    Agora você obtém somente a primeira coluna, com uso de awk:

    Código :
    lsblk -io KNAME,TYPE | grep disk | awk '{print $1}'

    Considerando que todos os scripts, em ambiente POSIX, quando executados, o primeiro argumento é $1. Com isso, a ideia é filtrar e comparar se o argumento informado está contido na relação de discos existentes

    Use o comando basename para separar o nome disco somente, caso o usuário informe o caminho completo do disco.

    Exemplo:
    Código :
    basename /dev/sda

    Vamos à lógica:

    Código :
    SE DISCO INFORMADO EXISTE NO VETOR DE DISCOS, ENTÃO:
        PROSSEGUE
    SENÃO:
        ABORTA

    Você pode montar um vetor com xargs, ou iterar com uso de do, for, foreach, until ou while.

    Enfim, com isso você já pode dar início ao seu código

    Espero ter ajudado.

    Saudações,