Скрипт Automated Shell для запуска команды fdisk с пользовательским вводом

Я хотел бы создать скрипт оболочки bash, который может запускать команды и предоставлять ввод, как если бы я печатал его на терминале.

Я уже писал сценарии оболочки bash и понимаю, как это сделать, но я немного запутался в том, как он «взаимодействует».

В настоящее время я должен выполнить fdisk и другие команды терминала, а затем пройти через их панель опций, предоставляя заданный / заданный ввод. Это занимает слишком много времени, и, поскольку оно постоянно, мне было интересно, как мне это сделать.

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

sudo fdisk /dev/sda

d

1

d

2

n

p

1

В качестве примера, где однострочные записи - это то, что я печатаю на своей клавиатуре, так как fdisk ожидает команды. Это не кажется действительным, но это может быть.

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

Я ценю всю помощь.

2
задан 19 May 2016 в 15:59

2 ответа

Я записал мне немного сценария с помощью команды fdisk, на основе того, что я знаю плюс биты кода, найденного онлайн, который делает что-то очень похожее, а именно, в интерактивном режиме отформатируйте диск в один или несколько разделов, спросив - ли это корректный диск, ожидающий в течение времени набора, или введенный от пользователя, предупреждая, что это собирается стереть его и т.д. Одной вещью, которую это не может сделать в ее текущей форме, является резюме, бегущее, это останавливается по любой причине от получения входа "Нет, не форматируйте!" от пользователя или просто ошибки. После того как это останавливается, это должно быть выполнено снова.

Примечание: $ ($Output_Device эха) является переменной оболочки и может быть заменен, например, sdb или любое аналогичное имя для дискового устройства. Фактическая fdisk команда (команды), которую я починил:

Форматы диск в два раздела, 1 из размера 64 МБ и 2 остальных частей диска:

(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)

Затем на самом деле форматирует разделы, 1 как FAT, 2 как ext3:

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

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

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

более общий случай, как заставить его возобновиться, я могу или не мочь делать, не пробовать. Аналогично, это работает с fdisk, но другие команды могут/, нуждаются в другом синтаксисе.

1
ответ дан 20 May 2016 в 01:59
  • 1
    @eddieferetro I don' t знают, как сделать это; я только что полностью удалил драйвер Nvidia с помощью sudo склонный - добираются, производят чистку Nvidia* и затем переустановил его с нуля после изменения версии gcc для использования. – Philippe Gaucher 10 September 2017 в 15:38

Ниже сценария должен создать область подкачки автоматически.

#!/bin/bash 
set -x

DEVICE="/dev/xvdf"

DISKID=$(blkid $DEVICE | cut -d' ' -f2 | cut -d\" -f2)

cat <<EOF | fdisk /dev/xvdf    #reads the disk utiliy
n   
p
1


t
82
w
EOF


partprobe $DEVICE

mkswap $DEVICE

echo "UUID=$DISKID    swap    swap   defaults   0   0" >> /etc/fstab

swapon -a

free -g >> /mstr/output.txt

set +x
0
ответ дан 29 September 2019 в 20:59

Другие вопросы по тегам:

Похожие вопросы: