Назад | Перейти на главную страницу

Как мне написать сценарий mkfs, который спрашивает: «Это все устройство, а не только один раздел! Все равно продолжайте?"

Я пытаюсь создать сценарий, форматирующий том Amazon EC2 EBS, чтобы я мог его смонтировать.

Из командной строки это выглядит так:

> mkfs -q -t ext4 /dev/sdf
/dev/sdf is entire device, not just one partition!
Proceed anyway? (y,n) 

(Команда верна; для моей цели не нужно создавать таблицу разделов)

Моя проблема: поскольку эта команда должна запускаться в автоматическом сценарии, у меня не может быть этого вопроса на терминале; никто не будет отвечать, и сценарий зависнет. Как мне этого избежать?

Я попытался:

> echo y | mkfs -q -t ext4 /dev/sdf

но это не помогает. Параметр -q также не имеет значения.

Из справочная страница:

   -F     Force mke2fs to create a filesystem, even if the specified device is not a partition on a block special device, or  if  other
          parameters do not make sense.

Так звоните mkfs.ext4 напрямую, а не через mkfsи добавьте -F параметр, чтобы игнорировать это предупреждение.

expect это то, что вы ищете. Попробуйте что-то вроде этого:

#!/usr/bin/expect

spawn mkfs -q -t ext4 /dev/sdf
expect "/dev/sdf is entire device, not just one partition!\nProceed anyway? (y,n)"
send -- "y\r"

expect eof