Script automatizado do Shell para executar o comando fdisk com a entrada do usuário

1

Gostaria de criar um script de shell bash que possa executar comandos e fornecer entradas como se eu estivesse digitando no terminal.

Eu escrevi scripts shell bash antes e entendo como, mas estou um pouco confuso sobre como ele 'interfaces'.

Atualmente, sou obrigado a executar o fdisk e outros comandos do terminal e depois passar pelo painel de opções fornecendo uma entrada definida / especificada. Está demorando muito e, como é constante, fiquei imaginando como faria isso.

Eu entendo que um script de shell é como se você fosse digitar o comando no terminal. Assim, posso literalmente escrever um script que diga algo como:

sudo fdisk /dev/sda

d

1

d

2

n

p

1

Como um exemplo onde as entradas de uma única string são o que eu digito no meu teclado enquanto o fdisk espera por comandos. Isso não parece válido, mas pode ser.

Além disso, algo que preciso fazer depois de executar esses comandos é desconectar a unidade e continuar a executá-la. Posso implementar isso no meu programa para esperar que eu o desconecte, faça a replicação e continue a executar o script automatizado?

Agradeço toda a ajuda.

    
por bobo06 03.03.2016 / 17:32

1 resposta

0

Eu escrevi para mim um pequeno script usando o comando fdisk, baseado no que eu sei mais pedaços de código encontrados on-line, que fazem algo muito similar, ou seja, formatam interativamente uma unidade em uma ou mais partições, perguntando se esta é a correta drive, esperando por um tempo definido, ou a entrada do usuário, avisando que está prestes a apagá-lo, etc. Uma coisa que ele não pode fazer, em sua forma atual, é retomar a execução após ser interrompido por qualquer razão, desde a entrada " Não, não formate! do usuário ou simplesmente um erro. Quando ele parar, tem que ser executado novamente.

Nota: $ (echo $ Output_Device) é uma variável shell e pode ser substituída por, por exemplo, sdb ou qualquer nome semelhante para um dispositivo de disco. O (s) comando (s) real (is) do fdisk que eu montei juntos são:

Formata o disco em duas partições, 1 de tamanho 64Mb e 2 no restante do disco:

(echo o; echo n; echo p; echo 1; echo ""; echo +64M; echo n; echo p; echo 2; echo ""; echo ""; echo w; echo q) | fdisk /dev/$(echo $Output_Device)

Então, na verdade, formata as partições, 1 como FAT, 2 como ext3:

mkfs.vfat -n BOOT /dev/$(echo $Output_Device)1

mkfs.ext3 -L root /dev/$(echo $Output_Device)2

Eu posso postar todo o script, mas é confuso, e gosto de manter comandos mesmo quando são comentados, para minha própria referência.

O caso mais geral, como fazê-lo retomar, eu posso ou não ser capaz de fazer, não tentei. Da mesma forma, isso funciona com o fdisk, mas outros comandos podem / precisarão de uma sintaxe diferente.

    
por Lubo Diakov 19.05.2016 / 14:06