Übergeben von Werten an intermediate (runtime) Eingabe-Aufforderungen von Windows Befehl
Habe ich eine windows-exe-Datei, die zeigt einige copyright-Informationen, eine Verbindung zu einem server und fordert dann zur Eingabe von Benutzername und Passwort.
Also immer wenn ich diesen starte, muss ich warten, bis die Aufforderung zur Eingabe von Benutzername und Passwort.
Ich in der Regel geben Sie vor dem Benutzernamen , Passwort, nachdem der Befehl startet die Anzeige der copyright-Informationen, aber das ist eine grobe Art und Weise.
Gibt es einen besseren Weg, um Parameter an eine Eingabe-Aufforderung von windows-Befehlen in einer batch-Datei, so dass ich vermeiden kann, indem Sie immer?
P. S. unter Linux machen wir das mit den << operator wie diese
linux_command <<delimiter
inputparamvalue1
inputparamvalue2
delimiter
linux_command ausgeführt wird und auf dem ersten Eingabe-prompt, es liest inputparamvalue1 und bei der nächsten Eingabe-prompt, es liest inputparamvalue2
Antwort auf James, vielen Dank für die Beratung über die Sicherheit. Ich werde mich darum kümmern.
Habe ich versucht zu implementieren Sie Ihre Lösung, aber das hat nicht funktioniert.
Diese sind meine Dateien. Bitte beachten Sie wenn Sie erhalten einen Hinweis.
vpn.bat
@ echo off
"C:\Program Files (x86)\Cisco\Cisco AnyConnect VPN Client\vpncli.exe" connect "mycompanyvpnsite.com"
login.txt
myusername
mypassword
startvpn.bat
@ECHO OFF
CALL vpn.bat < login.txt
ECHO I'm back!
Ergebnis
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:
Benutzernamen " myusername was es zeigt ist der Cache von meinem vorherigen manuellen logins. So erscheint es, dass dieser Lauf hat nicht irgendwelche Werte aus der login.txt.
Wenn ich ausgeführt hatte mein vpn.Fledermaus alleine und ohne params, bekomme ich prompt wie diese
VPN>
>> Please enter your username and password.
Username: [myusername] <i press enter to take the cached value>
Password: ******** <i enter password and press enter>
und es verbindet.
Den vpn-client hat keine Berechtigung, um Passwort angeben auf der Kommandozeile, das ist, warum ich bin, versuchen auf diese Weise.
Ihre Lösung ist so dass das gleiche Ergebnis wie die von James.
Möglich, Duplikat der die Fütterung von input-zu einer interaktiven Kommandozeilen-Anwendung
Dieses Problem ist in stackoverflow.com/a/28048413/397331 mit:
vpncli.exe -s (...)
InformationsquelleAutor Chinni Krishna | 2012-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
habe ich einen funktionierenden code! Es ist so ähnlich wie James K, aber mit ein paar bugs gehämmert. Noch einmal, ich möchte noch einmal betonen, dass dies eher unsicher, weil es setzt Sie Ihr Passwort in einer unverschlüsselten Einstellung. that being said:
Glück!
InformationsquelleAutor jake s
Speichern Ihren Benutzernamen und Ihr Passwort in eine Datei zu automatisieren login-Verfahren ist eine sehr schlechte Idee, und ungültig, keine Sicherheit, dass Benutzernamen und Passwörter liefert, weil jeder, der zu bekommen ist, die elektronischen oder physischen Zugang zu Ihrem computer haben Zugriff auf die Klartext-Benutzernamen und Passwort.
Sagte, in der DOS /Windows-Eingabeaufforderung müssen Sie eine zusätzliche Datei mit Ihrem Benutzernamen und Passwort in etwa so:
LOGIN.TXT
Leiten Sie diese Datei in Ihre Befehlszeile wie diese:
Diese agieren genauso, als würden Sie an der Konsole und tippte
MyUserName[ENTER]
MyPassword[ENTER]
.login.txt
ist nur eine plain-vanilla-text-Datei, und braucht nicht die.txt
Erweiterung oder keine Erweiterung überhaupt für diese Angelegenheit.Den
CALL
- Anweisung ist nur erforderlich, wenn die Einführung eines anderen batch-Datei, wenn Sie es wollen, und wenn Sie fertig sind, weiter ausgeführt in der ursprünglichen aufrufenden batch-Datei. MitCALL
macht keinen Unterschied, wenn der Aufruf einer ausführbaren Datei (nichts anderes als eine batch-Datei).EDIT: Wie pro Ihre Kommentare, ich glaube, dass Sie dies tun müssen, um es zu arbeiten:
In diesem Fall leiten Sie zu Ihrem
vpncli.exe
, aber ich glaube, dass dies den Nebeneffekt der Herstellungvpncli.exe
NUR Eingaben akzeptieren vonlogin.txt
, und nicht von der Tastatur, bisvpncli.exe
beendet. Was bedeutet, dass Sie brauchen, um zu automatisieren (speichern inlogin.txt
) alle Sachen, die Sie benötigen würden, zu geben. Dies sollte kein problem sein, es sei denn, Sie brauchen, um manuell die Interaktion mitvpncli.exe
später auf.EDIT: Seit
vpncli.exe
zu sein scheint, löschen des Puffers vor dem Lesen alle Tastatureingaben, schlage ich vor, dass eventuell mit VBS könnte erhalten Sie, wo Sie wollen, sind zu gehen.VPN.VBS
'VBScript-Beispiel
Set WshShell = WScript.CreateObject("WScript.Shell")
Aber ich kann nicht sicher sein. Ich habe Probleme dieses zu testen, aber ich bin einfach hin-und hergeworfen zwischen batch-Dateien und VBS-Skripts.
Obwohl ich weiß, wenn Sie ersetzen die WshShell.Führen Sie und WshShell.AppActivate mit den folgenden zwei Zeilen, dass...
...mit notepad öffnen und die folgenden zwei Zeilen wird angezeigt:
Wenn dies nicht funktioniert für Sie, ich denke über das löschen dieser Antwort völlig, da es enthält nur Vorschläge, die nicht gearbeitet habe.
Ich bearbeitete Ihre Folgen-auf in die Frage selbst, die ist, wo es wirklich zählt. Möchten Sie vielleicht zu sauber, zu passen, den rest von deiner Frage, aber.
Dank Brad für nicht an der Abstimmung unten. Ich Folge Ihr beraten.
James, ich habe versucht vorbei login.txt zu vpncli direkt, aber das Ergebnis ist dasselbe. Es scheint, dass vpncli ausgeführt wird, so etwas wie 'clear buffer', wenn es Eingabeaufforderung für das Kennwort. Ich vermutete, dass diese nach einem Verfahren, um zwei Linien - 1. EINGEBEN und 2. y - im login.txt. (vpncli erwartet ein 'y' für ein banner von Fristen nach dem Passwort vor dem verbinden). Das Ergebnis war - vermutlich nahm die Linie 1 für den Benutzernamen, die Sie verwenden Cache-Benutzernamen, hielt an der Kennwort-Eingabeaufforderung, die ich manuell eingegeben-Passwort+ENTER und dann nahm Sie die "y" aus logn.txt und verbunden.
James, würde der neue-Zeile-Zeichen in login.txt eh egal? Ich erstelle es mit Notepad++ auf die Herstellung nicht-druckbare Zeichen sichtbar, sehe ich es als "Benutzername" {CR}{LF}mypassword{CR}{LF}. Ich habe versucht, alle Kombinationen, die mit CR, LF individuell und sowohl. Ergebnis ist das gleiche.
InformationsquelleAutor James K