使用expect实现fdisk /dev/sdb 免交互创建分区,要求创建逻辑分区10G /dev/sdb5
时间: 2023-09-08 17:13:50 浏览: 100
expect中文教程
4星 · 用户满意度95%
可以使用以下expect脚本实现:
```
#!/usr/bin/expect
set timeout 10
spawn fdisk /dev/sdb
expect "Command (m for help): "
send "n\r"
expect "Select (default p): "
send "l\r"
expect "Partition number (1-4): "
send "5\r"
expect "First sector (): "
send "\r"
expect "Last sector, +sectors or +size{K,M,G,T,P} (): "
send "+10G\r"
expect "Command (m for help): "
send "w\r"
expect eof
```
解释一下:
- `set timeout 10`:设置超时时间为10秒。
- `spawn fdisk /dev/sdb`:执行fdisk命令,打开/dev/sdb磁盘的分区表。
- `expect "Command (m for help): "`:等待命令提示符出现。
- `send "n\r"`:发送n键,表示创建新分区。
- `expect "Select (default p): "`:等待分区类型选择提示。
- `send "l\r"`:发送l键,表示创建逻辑分区。
- `expect "Partition number (1-4): "`:等待分区号输入提示。
- `send "5\r"`:发送5键,表示创建第5个分区。
- `expect "First sector (): "`:等待第一个扇区号输入提示。
- `send "\r"`:直接回车,表示使用默认的第一个扇区号。
- `expect "Last sector, +sectors or +size{K,M,G,T,P} (): "`:等待最后一个扇区号或者分区大小输入提示。
- `send "+10G\r"`:发送+10G,表示创建大小为10G的分区。
- `expect "Command (m for help): "`:等待命令提示符出现。
- `send "w\r"`:发送w键,表示保存分区表并退出。
- `expect eof`:等待命令执行完毕并退出。
阅读全文