cygwin 的 Expect 不适用于网络使用?
-
19-09-2019 - |
题
我需要在 cygwin 上自动执行“net use”命令。
命令是'net use /user:"name" \somewhere'。而'输入'name'的密码连接到'prosseek':'预计会输入密码。
它适用于命令行输入以及在批处理文件中运行时。当我按如下方式制作预期脚本时,它不起作用。
spawn net use /user:"name" \\prosseek\somewhere expect "Enter the password for 'name' to connect to 'prosseek':" send "password\n" interact
我收到如下错误消息。
spawn net use /user:"name" \prosseek\somewhere System error 67 has occurred.找不到网络名称。
发送:无效的生成 ID (4) 执行时 “发送”密码 “” (文件“conpros”第 9 行)
- 问:可能出了什么问题?
- 问:某些 MS 命令(例如“net use”)可以与 cygwin/expect 一起使用吗?
解决方案
您可能无法将 Cygwin 的 Expect 与非 cygwin 程序一起使用;Cygwin 模拟 posix ptys,而 Windows 程序使用 Windows 自己的终端处理代码,该代码对期望尝试读取和写入的管道一无所知。
你也未能逃脱期望中的反斜杠;请注意,错误消息给出的字符串与您传入的字符串不同。
其他提示
这里可能有一些建议:
你能探索到\proseek\某个地方吗?如果是这样,我想您可能需要在某个地方转义反斜杠 \\proseek\ 。
网络名称部分还可能表明它无法解析主机名。
不隶属于 StackOverflow