Автоматизация создания разделов с помощью fdisk

Вопрос или проблема

Я использую следующие команды в командной строке:

sudo fdisk /dev/mmcblk1
p
d
w

sudo fdisk /dev/mmcblk1
n
(используя все параметры по умолчанию)
w

Пожалуйста, есть ли возможность автоматизировать эту задачу? Или как использовать однострочную команду для этого (даже для каждой команды fdisk в виде однострочника, то есть два однострочника в общей сложности)? Или, может быть, с помощью Python?

Вы можете использовать однострочную команду (bash):

(echo p; echo d; ... ; echo w) | fdisk /dev/mmcblk1

Для установки ответа по умолчанию используйте echo "", чтобы ответить “Да”, используйте echo "Y"

Просто создайте файл (например, fdisk_cmds), который будет содержать команды, как, например:

p
i
    # Это пустая строка для выбора ответа по умолчанию
q

sudo fdisk /dev/mmcblk1 < fdisk_cmds

Рассмотрите SFDisk для этой задачи.

https://stackoverflow.com/questions/12150116/how-to-script-sfdisk-or-parted-for-multiple-partitions

Заранее спасибо

Карлос Ромель

Во-первых, используйте более подходящий инструмент. Но если вам нужно автоматизировать такого рода ввод, используйте here-doc:

sudo fdisk /dev/mmcblk1 <<\КонецОтветов
p
d
w
q
КонецОтветов

(Вы можете выбрать любой символ, который вам нравится вместо КонецОтветов; в документации часто используется EOF, но это всего лишь соглашение. \ после << просто делает первую букву КонецОтветов “цитируемой”, как это видит оболочка, что означает, что в теле here-doc не происходит $ расширений; вы можете добиться того же эффекта, используя <<'КонецОтветов' или <<"КонецОтветов" или даже <<КонецОтв\nетов.)

Ответ или решение

Для автоматизации создания разделов с помощью fdisk, вы можете использовать несколько подходов, включая однострочные команды и скрипты. Вот некоторые из них:

Подход с использованием here-doc

Один из наиболее простых способов автоматизации — это использование here-doc. Вы можете выполнять команду fdisk, передавая ей набор команд через стандартный ввод. Пример это выглядит следующим образом:

sudo fdisk /dev/mmcblk1 <<EOF
p
d
w
EOF

В данном примере EOF — это маркер, который указывает на конец ввода команд. Вы можете использовать любой другой маркер, который вам удобен.

Создание файла команд

Другой способ — создать файл, содержащий все необходимые команды fdisk. Например, создайте файл fdisk_cmds с содержимым:

p
d
w

И затем выполните команду fdisk, передав этот файл:

sudo fdisk /dev/mmcblk1 < fdisk_cmds

Использование sfdisk

Стоит отметить, что для более сложных операций с разделами многие эксперты рекомендуют использовать утилиту sfdisk, так как она более предсказуема и удобна для автоматизации. Пример использования sfdisk:

sudo sfdisk /dev/mmcblk1 < имя_файла

Где имя_файла может содержать разметку, например:

dev/mmcblk1 :
1M,,L,*  # Первичный раздел, размером 1М, тип - FAT16

Использование Python

Если вы хотите использовать Python для автоматизации, вы можете воспользоваться библиотекой subprocess, чтобы выполнять команды. Например:

import subprocess

commands = "p\nd\nw\n"
process = subprocess.Popen(['sudo', 'fdisk', '/dev/mmcblk1'], stdin=subprocess.PIPE)
process.communicate(commands.encode())

В данном коде мы создаем процесс, который вызывает fdisk и передаем ему команды.

Заключение

Выбор метода автоматизации зависит от ваших требований к проекту. Лучше использовать sfdisk для более сложных задач, так как эта утилита более надежна для автоматизации. Но если вам нужно просто выполнить несколько команд fdisk, рассмотренные выше методы работают вполне эффективно.

Оцените материал
Добавить комментарий

Капча загружается...