GNU partiu resizepart no script

4

Eu gostaria de usar o comando yes para que o GNU parted não espere a entrada do usuário:

root@195-xxx-xxx-xxx:/proc# parted /dev/sda unit B resizepart 2 1166016512B
 Warning: Shrinking a partition can cause data loss, are you sure you want 
 to continue?
Yes/No? y                                                                 
Information: You may need to update /etc/fstab.
root@195-xxx-xxx-xxx:/proc# echo $?
0

No entanto, usar yes não funciona aqui:

root@195-xxx-xxx-xxx:/proc# yes | parted /dev/sda unit B resizepart 2 166016512B
 Warning: Shrinking a partition can cause data loss, are you sure you 
 want to continue?
root@195-xxx-xxx-xxx:/proc# echo $?
1

Editar:

A opção --script não funciona tão bem:

root@195-xxx-xxx-xxx:/proc# parted --script /dev/sda unit B resizepart 2 1166016512B
 Warning: Shrinking a partition can cause data loss, are you sure you 
 want to continue?
root@195-xxx-xxx-xxx:/proc# echo $?
1
    
por Xion345 15.03.2015 / 19:36

4 respostas

5

Se resizepart não funcionar, talvez seja necessário recorrer a rm e mkpart para obter a mesma coisa.

Naturalmente, isso exigiria que você analisasse a tabela de partição primeiro para determinar o tipo de partição e iniciar o deslocamento. A menos que você já conheça os valores necessários. Afinal, você tinha que pegar o 166016512B de algum lugar também.

parted tem a opção --machine para produzir uma saída facilmente analisável. Por outro lado, exemplos de análise real não são facilmente encontrados. ;)

    
por 15.03.2015 / 20:37
4

Esse bug é observado aqui: link

Como observado no tópico, existem dois problemas de trabalho. O mais simples é simplesmente acrescentar "Sim" à lista de comandos:

parted --script /dev/sda unit B resizepart 2 1166016512B Yes
    
por 12.05.2015 / 03:48
4

No meu caso, eu estava usando o Parted 3.2 de dentro de uma sessão SSH sem tty. O comando "Sim" não funcionou, pois o código separado tem o seguinte teste:

    /* script-mode: don't handle the exception */
    if (opt_script_mode || (!isatty (0) && !pretend_input_tty))
            return PED_EXCEPTION_UNHANDLED;

Observe que o teste "isatty", que falhará. O 'pretend_input_tty' é uma opção de linha de comando não documentada, que pode ser ativada via --- fingir-input-tty.

Então, se você quiser usar o parted de um script, minha resposta é a seguinte:

/sbin/parted -a optimal /dev/loop1 ---pretend-input-tty resizepart 4 Yes 522239s

Anote os três traços na frente de fingir-input-tty. Eu acho que isso deveria nos assustar. Não tenho certeza.

    
por 17.05.2017 / 17:35
0

Se você deseja automatizar com parted usando apenas argumentos de linha de comando, execute -s . De man parted :

-s, --script
          never prompts for user intervention
    
por 15.03.2015 / 19:39