La transmission de valeurs intermédiaires (runtime) entrée invite de commande de Windows
J'ai un exe de windows qui affiche des informations de copyright, se connecte à un serveur et à l'écran pour la saisie du nom d'utilisateur et mot de passe.
Donc à chaque fois que je l'exécute, je dois attendre l'invite à entrer votre nom d'utilisateur et mot de passe.
De manière générale, j'type à l'avance le nom d'utilisateur , mot de passe après la commande commence à afficher les informations de copyright, mais c'est une façon grossière.
Est-il une meilleure façon de passer des paramètres à une invite de commande windows, dans un fichier de commandes, afin que je puisse éviter de taper toujours?
P. S. Linux nous faisons cela en utilisant le << opérateur comme ce
linux_command <<delimiter
inputparamvalue1
inputparamvalue2
delimiter
linux_command, et sur la première invite d'entrée, il lit inputparamvalue1 et à la prochaine invite d'entrée, il lit inputparamvalue2
En réponse à James, merci pour les conseils sur la sécurité. Je vais prendre soin de cela.
J'ai essayé de mettre en œuvre votre solution mais cela ne fonctionne pas.
Ce sont mes fichiers. Merci de voir si vous avez le moindre indice.
vpn.chauve-souris
@ echo off
"C:\Program Files (x86)\Cisco\Cisco AnyConnect VPN Client\vpncli.exe" connect "mycompanyvpnsite.com"
login.txt
myusername
mypassword
startvpn.chauve-souris
@ECHO OFF
CALL vpn.bat < login.txt
ECHO I'm back!
Résultat
D:\>startvpn.bat
Cisco AnyConnect VPN Client (version 2.5.6005) .
Copyright (c) 2004 - 2010 Cisco Systems, Inc.
All Rights Reserved.
>> state: Disconnected
>> notice: Ready to connect.
>> registered with local VPN subsystem.
>> state: Disconnected
>> notice: Ready to connect.
VPN> >> contacting host (mycompanyvpnsite.com) for login information...
>> notice: Contacting mycompanyvpnsite.com.
VPN>
>> Please enter your username and password.
Username: [myusername] Password:
Nom d'utilisateur myusername qui il est visible est mis en cache par mon ancien manuel de connexions. Il semble donc que cette course n'a pas pris toutes les valeurs de la login.txt.
Si j'avais exécuté mon vpn.bat toute seule sans params, je reçois invite comme ce
VPN>
>> Please enter your username and password.
Username: [myusername] <i press enter to take the cached value>
Password: ******** <i enter password and press enter>
et il se connecte.
Le client vpn n'a pas de privilège pour spécifier le mot de passe sur la ligne de commande, c'est pourquoi je suis en train d'essayer de cette façon.
votre solution est de donner le même résultat que celui de James.
Double Possible de l'Alimentation d'entrée interactive application en ligne de commande
Ce problème est résolu dans le stackoverflow.com/a/28048413/397331 utilisation:
vpncli.exe -s (...)
OriginalL'auteur Chinni Krishna | 2012-08-30
Vous devez vous connecter pour publier un commentaire.
j'ai un code qui fonctionne! Il est similaire à la James K, mais avec quelques bugs martelé. Encore une fois, je tiens à rappeler que c'est plutôt précaire, car il expose votre mot de passe, le chiffrement d'une configuration. cela étant dit:
Bonne chance!
OriginalL'auteur jake s
Enregistrement de votre nom d'utilisateur et mot de passe dans un fichier pour automatiser le processus de connexion est une très mauvaise idée et invalide toute sécurité qu'en exigeant que les noms d'utilisateur et mots de passe des fournitures, parce que quiconque obtenir de l'électronique ou de l'accès physique à votre ordinateur aura accès à votre plaine de texte nom d'utilisateur et mot de passe.
Cela dit, dans le DOS /Invite de Commande Windows, vous aurez besoin d'un supplément de fichier contenant votre nom d'utilisateur et le mot de passe de la sorte:
LOGIN.TXT
Ensuite copier ce fichier dans votre commande comme ceci:
Cela va agir comme si vous étiez à la console et tapé
MyUserName[ENTER]
MyPassword[ENTER]
.login.txt
est juste une plaine de vanille fichier texte, et n'a pas besoin de la.txt
extension, ou toute extension à tous pour cette question.La
CALL
déclaration n'est nécessaire que lors du lancement d'un autre fichier de commandes, si vous le souhaitez, lorsque vous avez terminé, poursuivre l'exécution à l'origine, l'appel de fichier de commandes. À l'aide deCALL
ne fait aucune différence lorsque l'appel d'un exécutable (rien d'autre qu'un fichier de commandes).EDIT: Que par vos commentaires, je crois que vous devez faire pour l'obtenir pour travailler:
Dans ce cas, vous rediriger vers votre
vpncli.exe
, mais je crois que cela aura pour effet secondaire de fairevpncli.exe
SEULEMENT accepter d'entrée delogin.txt
, et non pas à partir du clavier jusqu'àvpncli.exe
sorties. Ce qui signifie que vous aurez besoin pour automatiser (stocker danslogin.txt
) tous les trucs que vous auriez normalement besoin de taper dans. Cela ne devrait pas être un problème, sauf si vous devez manuellement interagir avecvpncli.exe
plus tard.EDIT: Depuis
vpncli.exe
semble se dégager de la mémoire tampon avant de lire toutes les frappes de touches, je suggère que, peut-être en utilisant VBS peut vous rendre où vous êtes désireux d'aller.VPN.VBS
'Exemple VBScript
Set WshShell = WScript.CreateObject("WScript.Shell")
Mais je ne peux pas en être sûr. J'ai eu des problèmes de tester ce, même si je suis juste en train de rebondir et-vient entre les fichiers de commandes et de scripts VBS.
Mais je ne sais si vous remplacez le WshShell.Exécuter et WshShell.AppActivate avec les deux lignes suivantes...
...le bloc-notes va s'ouvrir, et les deux lignes suivantes apparaissent:
Si cela ne fonctionne pas pour vous, je pense à propos de la suppression de cette réponse totalement puisqu'il ne contient que des suggestions qui n'ont pas travaillé.
J'ai édité votre suivi dans la question elle-même, qui est l'endroit où il appartient vraiment. Vous pourriez vous voulez les nettoyer qu'à monter le reste de votre question.
Merci Brad pour ne pas voter en bas. Je vais suivre tes conseils.
James, j'ai essayé en passant login.txt pour vpncli directement, mais le résultat est le même. Il semble que vpncli est l'exécution de quelque chose comme 'effacer la mémoire tampon d'entrée" quand il vous demande le mot de passe. Je me doutais de ce après un essai de mettre les deux lignes - 1. ENTREZ et 2. e - dans le login.txt. (vpncli s'attend à un " y " pour une bannière de termes après le mot de passe avant de vous connecter). Le résultat était - il a probablement pris la ligne 1 pour le nom d'utilisateur, qui en a fait usage en cache le nom d'utilisateur, arrêté à l'invite de mot de passe, j'ai entré manuellement le mot de passe+ENTER et ensuite il a pris le "y" de l'logn.txt et connecté.
James, le caractère de saut de ligne dans login.txt question de toute façon? J'ai créer dans Notepad++ et non des caractères imprimables visible, je le vois comme myusername{CR}{LF}monmotdepasse{CR}{LF}. J'ai essayé toutes les combinaisons avec le CR, LF, individuellement et de deux. Le résultat est le même.
OriginalL'auteur James K