Ожидание cygwin не работает с использованием сети? - PullRequest
1 голос
/ 10 февраля 2010

Мне нужно автоматизировать команду 'net use' на cygwin.

Команда 'net use / user: "name" \where'. И «Введите пароль для« 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.

The network name cannot be found.

send: invalid spawn id (4)
    while executing
"send "password\n""
    (file "conpros" line 9)
  • В: Что может быть не так?
  • В: Может ли какая-то команда MS что-то вроде 'net use' работать с cygwin / ожидаемо?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2010

Вы, вероятно, не можете использовать ожидание Cygwin с программами не-Cygwin; Cygwin эмулирует posix ptys, в то время как программы Windows используют собственный код обработки терминалов Windows, который ничего не знает о конвейерах, которые ожидают, пытаясь читать и писать в.

Вы также не смогли избежать своих обратных слешей; обратите внимание, что в сообщении об ошибке указана строка, отличная от той, которую вы передали.

2 голосов
/ 10 февраля 2010

Вот некоторые предложения:

Можете ли вы исследовать \ prosseek \ где-нибудь? Если это так, я полагаю, что вам может понадобиться избежать обратной косой черты \\ proseek \ где-нибудь.

Часть имени сети может также указывать, что она не может разрешить имя хоста.

...