- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 veracryp,需要以非交互模式运行安装脚本。要运行脚本,如果以交互模式运行,我需要将脚本要求的答案传递给它。问题是,如果我通过命令管道或从文件传递答案,我会收到错误消息:
echo -e "1\n\nq\ny\ny\n\n" | /opt/tdp/veracrypt-1.23-setup-console-x64
Verifying archive integrity... 100%
All good. Uncompressing VeraCrypt 1.23 Installer 100%
Error: Terminal required
如果我在没有管道的情况下运行相同的脚本,则脚本可以正常工作。
我把问题缩小到这一行
问题在于,根据脚本是通过管道运行还是由其自身运行,代码行的计算方式不同,这一行:
tty >/dev/null 2>/dev/null && TTY=1
为了解决这个问题,我创建了这个虚拟凭证
A=0
tty >/dev/null 2>/dev/null && A=1
echo "A is"
echo $A
echo
如果您将此脚本命名为 inst.sh 并运行它两次,使用和不使用管道您将得到不同的结果
# echo xxx | ./inst.sh
A is
0
# ./inst.sh
A is
1
知道为什么吗?这可能会帮助我解决 veracript 问题(我无法更改 veracript 安装脚本)
非常感谢
最佳答案
我已经使用 expect 完成了这种自动化(是根据脚本与其他交互程序“对话”的程序)
如果不存在,您需要将其安装到您的 docker 镜像中。
您需要创建一个 expect 脚本,其中包含每个问题的提示和答案。
在 install-vera-crypt.exp
文件中:
#!/usr/bin/expect -f
set timeout -1
spawn /opt/tdp/veracrypt-1.23-setup-console-x64
expect "The text you expect to answer 1\r"
send -- "1\r"
expect "The text you expect to answer q\r"
send -- "q\r"
...
expect eof
然后你可以执行它:expect -f install-vera-crypt.exp
关于linux - 如果从脚本运行,veracrypt 安装脚本失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239247/
我正在开发一个私有(private)项目,并开始对有人窃取我的代码感到有点偏执,并且不想依赖当前源代码控制托管服务的诚实,尽管我没有任何理由不这样做信任他们。在可预见的 future ,我将是唯一从事
我正在使用 veracryp,需要以非交互模式运行安装脚本。要运行脚本,如果以交互模式运行,我需要将脚本要求的答案传递给它。问题是,如果我通过命令管道或从文件传递答案,我会收到错误消息: ec
我正在尝试从 powershell 脚本运行以下命令。 "C:\Program Files\VeraCrypt\VeraCrypt Format-x86.exe" /create "C:\test v
我正在尝试从 powershell 脚本运行以下命令。 "C:\Program Files\VeraCrypt\VeraCrypt Format-x86.exe" /create "C:\test v
据我所知,veracrypt 的 linux 版本没有 gui(我正在运行 Ubuntu),这很好,但我想更改加密驱动器的密码,但不知道该怎么做。 我用 -C 尝试了多种选项组合。和 --new-pa
veracrypt 是否在内存中进行任何类型的文件缓存,这可能会阻止对我的 git 配置文件的更改被识别? 长版本:我在与 Windows 共享的 veracrypt 分区上有一个存储库。在尝试在我的
我试图在 Linux 命令行上使用相同的密码更方便地挂载多个 Veracrypt 卷。由于 Veracrypt 仅支持 GUI 模式下的密码缓存,因此我编写了以下代码来为我完成这项工作: #inclu
尝试通过 go 命令行指令启动 veracrypt 但它获得退出状态 1 或未显示错误且未创建请求的卷。 func main() { cmd := exec.Command("veracryp
我是一名优秀的程序员,十分优秀!