Shell-Script
GNU 在腳本中分開 resizepart
我想使用該
yes
命令,以便 GNU parted 不等待使用者輸入:root@195-xxx-xxx-xxx:/proc# parted /dev/sda unit B resizepart 2 1166016512B Warning: Shrinking a partition can cause data loss, are you sure you want to continue? Yes/No? y Information: You may need to update /etc/fstab. root@195-xxx-xxx-xxx:/proc# echo $? 0
但是
yes
在這裡使用不起作用:root@195-xxx-xxx-xxx:/proc# yes | parted /dev/sda unit B resizepart 2 166016512B Warning: Shrinking a partition can cause data loss, are you sure you want to continue? root@195-xxx-xxx-xxx:/proc# echo $? 1
編輯:
該
--script
選項也不起作用:root@195-xxx-xxx-xxx:/proc# parted --script /dev/sda unit B resizepart 2 1166016512B Warning: Shrinking a partition can cause data loss, are you sure you want to continue? root@195-xxx-xxx-xxx:/proc# echo $? 1
如果
resizepart
不起作用,您可能不得不求助於rm
並mkpart
實現相同的目標。當然,這需要您首先解析分區表以確定分區類型和起始偏移量。除非您已經知道必要的值。畢竟你也必須
166016512B
從某個地方得到。
parted
可以--machine
選擇生成易於解析的輸出。另一方面,實際解析它的例子並不容易找到。;)
就我而言,我在無 tty 的 SSH 會話中使用 Parted 3.2。“是”命令破解不起作用,因為分開的程式碼具有以下測試:
/* script-mode: don't handle the exception */ if (opt_script_mode || (!isatty (0) && !pretend_input_tty)) return PED_EXCEPTION_UNHANDLED;
請注意,‘isatty’ 測試將失敗。“pretend_input_tty”是一個未記錄的命令行選項,可以通過 —pretend-input-tty 打開。
所以,如果你想從腳本中使用 parted,我的回答如下:
/sbin/parted -a optimal /dev/loop1 ---pretend-input-tty resizepart 4 Yes 522239s
如果這不起作用,請嘗試移動
Yes
到最後:/sbin/parted -a optimal /dev/loop1 ---pretend-input-tty resizepart 4 522239s Yes
請注意假裝輸入 tty 前面的三個破折號。我認為這應該把我們嚇跑。不過不確定。