首页 > 解决方案 > windows cmd 模拟控制台输入命令

问题描述

当用户名和密码保存在某处(例如:在文件中)时,我需要编写一个自动连接到 vpn 的批处理脚本。VPN 客户端是提供 CLI 的 openconnect,但问题是用户输入需要以交互方式提供给命令才能完成。

当我运行时,请参阅下面的输出:

openconnect <serverhostname>

输出

POST https://<serverhostname>/
Connected to <serverhostname>:443
SSL negotiation with <serverhostname>
Server certificate verify failed: signer not found

Certificate from VPN server "<serverhostname>" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
    --servercert pin-sha256:<somesha>
Enter 'yes' to accept, 'no' to abort; anything else to view:

所以我基本上必须手动输入 yes 并按 Enter (它还会提示进一步输入),这需要在脚本中自动化。此外,值得注意的是输出建议提供--server-cert选项,我可以这样做,但是当它询问密码时,没有选项。

我尝试将输入行放在一个文件中并将其重定向到命令的标准输入(这不起作用,但与 Linux 上的 zsh 相同的方法)

openconnect <serverhostname> < inputfile.txt

我还尝试通过管道连接到命令的标准输入,但也没有用。

我认为特定命令不是从标准输入读取,而是直接从控制台读取,我真的不知道如何,但我可以在 cmd 上找到一些关于“CON”的信息。

任何解决方案都受到高度赞赏。

标签: windowsbatch-filecmdwindows-scripting

解决方案


推荐阅读