0

因此,正如标题所示,我正在尝试创建一个预期脚本,该脚本将在我损坏的驱动器上运行fsck 。目标是修复驱动器,以便我可以安装它并从中恢复数据。

手动运行命令时,我得到:

超级块或分区表都可能损坏!中止你?

如果我说“否”,它将开始检查,我会收到:

/dev/footage/TrickCeratops 包含有错误的文件系统,强制检查。通过 1:检查 inode、块和大小在从扫描中获取下一个 inode 时读取块 1221066784(无效参数)时出错。忽略错误 y?

然后我可以说“是”继续前进,它会再次提示我:

强制重写 y ?

这就是我遇到问题的地方......我可以自动化前两个答案,但无法让我的期望脚本在“强制重写?”中回答“是” 。如果我可以让它回答第二个和第三个问题,是的,那么我需要循环它直到完成。

到目前为止,我的脚本如下所示:

    #!/bin/bash

    expect -c'

       set timeout -1

       set temp password

       spawn ./e2fsckscript.sh

       expect "password for user:"

       send "$temp\r"

       expect "Abort<y>?"

       send "no\r"

       expect {

               "Ignore error<y>?"{
                    send "yes\r"
               }

               "Force rewrite<y>?"{
                    send "yes\r"
               }
               exp_continue
       }
    '

spawn ./e2fsckscript.sh”只运行一个命令:

sudo e2fsck -b 32768 /dev/footage/TrickCeratops

4

0 回答 0