2010-02-10 19 views
1

J'ai besoin d'automatiser la commande 'net use' sur cygwin.attend de cygwin ne fonctionne pas avec l'utilisation nette?

La commande est 'net use/user: "nom" \ quelquechose ". Et 'Entrez le mot de passe pour' nom 'pour se connecter à' prosseek ':' devrait entrer le mot de passe.

Fonctionne bien avec l'entrée de ligne de commande et lors de l'exécution dans un fichier batch. Cela ne fonctionne pas lorsque je crée un script expect comme suit.

 
spawn net use /user:"name" \\prosseek\somewhere 
expect "Enter the password for 'name' to connect to 'prosseek':" 
send "password\n" 
interact 

Je reçois un message d'erreur comme suit.

 
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)

  • Q: Qu'est-ce qui pourrait ne pas fonctionner?
  • Q: Certains MS peuvent-ils commander quelque chose comme 'net use' fonctionnant avec cygwin/expect?

Répondre

3

Vous ne pouvez probablement pas utiliser Cygwin's avec des programmes non-cygwin; Cygwin émule les ptix posix, tandis que les programmes Windows utilisent le propre code de gestion des terminaux de Windows, qui ne sait rien sur les pipelines qui s'attendent à lire et à écrire.

Vous avez également échoué à échapper à vos barres obliques inverses dans expect; Notez que le message d'erreur donne une chaîne différente de celle que vous avez transmise.

2

Voici peut-être quelques suggestions:

Pouvez-vous explorer à \ prosseek \ quelque part? Si oui, j'imagine que vous devrez peut-être échapper aux barres obliques inversées \\ proseek \ quelque part.

Le nom de réseau peut également indiquer qu'il ne peut pas résoudre le nom d'hôte.