ターミナルで入力するかのように、コマンドを実行して入力を提供できるbashシェルスクリプトを作成したいと思います。
以前にbashシェルスクリプトを作成し、その方法を理解していましたが、その「インターフェイス」については少し混乱しています。
現在、fdiskやその他の端末コマンドを実行してから、オプションパネルを使用して設定/指定の入力を提供する必要があります。時間がかかりすぎており、一定なので、どうしたらいいのかと思っていました。
シェルスクリプトは、そのコマンドを端末に入力する場合のようです。したがって、文字通り、次のようなスクリプトを記述できますか。
Sudo fdisk /dev/sda
d
1
d
2
n
p
1
Fdiskがコマンドを待機するときにキーボードに入力するのが単一の文字列エントリである例として。これは有効なように見えませんが、そうかもしれません。
また、これらのコマンドが実行された後に私がしなければならないことは、ドライブを取り外してから実行を続けることです。それを私のプログラムに実装して、プラグを抜いてから再プラグしてから自動スクリプトを実行し続けることができますか?
すべての助けに感謝します。
私が知っていることに加えてオンラインで見つけたコードの一部に基づいて、fdiskコマンドを使用して小さなスクリプトを自分で作成しました。設定された時間、またはユーザーからの入力、消去しようとしているなどの警告。現在の形式では、何らかの理由で停止した後に実行を再開することができます。 「フォーマットしない!」ユーザーから、または単にエラー。停止したら、再度実行する必要があります。
注:$(echo $ Output_Device)はシェル変数であり、たとえばsdbまたはディスクデバイスの同様の名前。私が一緒にまとめた実際のfdiskコマンドは次のとおりです。
ディスクを2つのパーティションにフォーマットします。1つはサイズ64Mbで、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でも機能しますが、他のコマンドでは異なる構文が必要になる場合があります。
以下のスクリプトは、スワップスペースを自動的に作成します。
#!/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