ожидание cygwin не работает при использовании сети?
-
19-09-2019 - |
Вопрос
Мне нужно автоматизировать команду "сетевое использование" в cygwin.
Команда называется "net use /user:"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.Имя сети не может быть найдено.
Отправить:неверный идентификатор создания (4) при выполнении "отправить "пароль "" (строка 9 файла "conpros")
- Q :Что может быть не так?
- Q :Может ли какая-нибудь команда MS, что-то вроде "net use", работать с cygwin / expect?
Решение
Вероятно, вы не сможете использовать ожидание Cygwin с программами, отличными от cygwin;Cygwin эмулирует posix ptys, в то время как программы Windows используют собственный код обработки терминала Windows, который ничего не знает о конвейерах, из которых expect пытается считывать и записывать данные.
Вам также не удалось избежать обратной косой черты в expect;обратите внимание, что сообщение об ошибке выдает строку, отличную от той, которую вы передали.
Другие советы
Здесь могут быть некоторые предложения:
Можете ли вы где-нибудь поискать?Если это так, я полагаю, что вам, возможно, придется где-то экранировать обратную косую черту \\proseek\.
Фрагмент сетевого имени также может указывать на то, что он не может разрешить имя хоста.