Как мне преодолеть разделенный запрос подтверждения в скрипте
Интересно, кто-нибудь делал такие вещи:
Мне нужно использовать parted в скрипте, делая немного хитрые операции. Я пытаюсь изменить расширенный раздел, содержащий раздел, на котором я загружен, поэтому я получаю запрос подтверждения, который приводит к ошибке выхода из режима сценария.
Когда я делаю это вручную, это работает.
Поэтому я попытался передать свой ввод в parted, чтобы обойти это с помощью следующего скрипта:
#!/usr/bin/env bash
parted /dev/sda << EOT
resizepart
4
y
33593343s
Yes
I
EOT
Это не работает, к сожалению. я получил
root@19912ac:/tmp# ./test.sh
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart
Partition number? 4
Warning: Partition /dev/sda4 is being used. Are you sure you want to continue?
(parted) y
align-check TYPE N
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
resizepart NUMBER END resize partition NUMBER
rm NUMBER delete partition NUMBER
...
Похоже, что все идет хорошо, пока меня не попросят подтвердить модификацию /dev/sda4. Мой следующий ввод (y) отображается в командной строке, но после этого я получаю только справочную информацию.
Кто-нибудь пробовал это раньше?
2 ответа
Есть скрытый флаг для разлученных ---pretend-input-tty
(Я думаю ---
означает, что это для расширенного использования или что-то в этом роде!). Я обнаружил, что использование этого в сценарии, похожем на ваш, работает:
Сценарий
#!/bin/bash
echo "Resizing partition ${2} on ${1} with new end ${3}"
parted "${1}" ---pretend-input-tty <<EOF
resizepart
${2}
${3}
Yes
quit
EOF
echo "Done"
существует другой способ без EOF:
echo -e "resizepart\n1\nYes\n100%\nprint free\nquit" | sudo parted /dev/vda ---pretend-input-tty