windows - 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”的信息。
任何解决方案都受到高度赞赏。
解决方案
推荐阅读
- flutter - Flutter如何重新加载整个页面
- php - WooCommerce 产品缩略图上方显示的黑点
- r - 对于第一个向量的每个非缺失元素,与第二个向量的滞后元素进行比较
- electron - 电子反应样板问题与 API
- html - 为什么移动导航中的所有元素都显示在彼此之上?
- javascript - 如何从 ReadableStream 响应中访问数据?
- javascript - 使用 setTimeout 函数时出现 toLowerCase 错误
- java - 如何使用重试模板捕获特定异常
- java - 为什么我的 toast 应用程序无法编译
- r - 如何在与“日期”关联的 quanteda 的“textstat_keyness”函数中设置目标