Loops Fsck期望脚本
因此,正如标题所示,我正在尝试创建一个expect脚本,该脚本将在损坏的驱动器上运行fsck。目标是修复驱动器,以便我可以装载它并从中恢复数据 手动运行命令时,我得到: 超级块或分区表可能已损坏! 流产 如果我声明“否”,它将开始检查,我将收到: /dev/taines/TrickCeratops包含一个有错误的文件系统,请强制检查。 第1步:检查索引节点、块和大小 从扫描获取下一个inode时读取块1221066784(无效参数)时出错。忽略错误y 然后,我可以声明“是”继续前进,它将再次提示我: 强制重写 这就是我遇到问题的地方。。。我最多可以自动回答前两个问题,但我无法让我的expect脚本在“强制重写?”上回答“是”,如果我可以让它回答第二个和第三个问题“是”,那么我需要循环它直到完成 到目前为止,我的脚本看起来是这样的:Loops Fsck期望脚本,loops,scripting,expect,mount,fsck,Loops,Scripting,Expect,Mount,Fsck,因此,正如标题所示,我正在尝试创建一个expect脚本,该脚本将在损坏的驱动器上运行fsck。目标是修复驱动器,以便我可以装载它并从中恢复数据 手动运行命令时,我得到: 超级块或分区表可能已损坏! 流产 如果我声明“否”,它将开始检查,我将收到: /dev/taines/TrickCeratops包含一个有错误的文件系统,请强制检查。 第1步:检查索引节点、块和大小 从扫描获取下一个inode时读取块1221066784(无效参数)时出错。忽略错误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
}
'
#/bin/bash
期望-c'
设置超时-1
设置临时密码
生成。/e2fsckscript.sh
应为“用户密码:”
发送“$temp\r”
期待“中止”
发送“否\r\n”
期待{
“忽略错误?”{
发送“是”\r\n
}
“强制重写?”{
发送“是”\r\n
}
exp\u继续
}
'
“spawn./e2fsckscript.sh”只运行一个命令:
sudo e2fsck-b 32768/开发/进尺/三角龙
为什么不运行
e2fsck-y…其他东西…
?因为如果我运行e2fsck-y,它将对中止提示回答“是”,然后exit@pynexj一般来说,我对linux和脚本编写还比较陌生,所以也许你可以帮我更多的忙。我真的不知道sexpect会对我的努力产生什么影响?看起来和我正在做的完全一样?只是因为我注意到您在bash脚本中使用了expect-c…
,这向我表明您更容易使用bash脚本。