Frage

Ich versuche plink.exe (PuTTY Link das Kommandozeilenprogramm / Version von PuTTY) aus einer C # Anwendung zu starten einen SSH-Reverse-Tunnel aufzubauen, aber es funktioniert nicht mehr funktionieren, sobald ich die richtigen Parameter übergeben .

Was bedeutet das? Im Folgenden wie erwartet funktioniert: es öffnet sich ein Kommandozeilen-Fenster, zeigt, dass ich das Passwort für die -pw Argument quitt passieren vergessen haben, und zeigt die Aufforderung. Ich weiß, dass es die Argumente hätte, da es speziell auf die eine Sache verlangt habe ich nicht geben.

Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw"; // TODO pwd
Process p = Process.Start(info);

habe ich versucht, das gleiche denken mit Aufruf plink.exe direkt statt cmd.exe /k, aber das Fenster schließt sich sofort, die für Bug-Jagd unglücklich ist.

Aber wenn ich ein Passwort in die Argumente übergeben, plink.exe zeigt die Programmhilfe (zeigt die verfügbaren Parameter) und quitt:

Uri uri = omitted;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "cmd";
info.Arguments = "/k \"C:\\Program Files (x86)\\PuTTY\\plink.exe\" -R 3389:" + uri.Host + ":" + uri.Port + " -N -l username -pw secretpassword";
Process p = Process.Start(info);

Kein Hinweis auf fehlende Parameter. Sowohl die cmd /k und plink.exe Varianten nicht funktionieren (letzteres schließt sofort, so dass keine Informationen in Bezug auf ein anderes Verhalten).

Wenn ich die Anwendung aus dem Windows 7-Startmenü launcher mit den gleichen Parametern zu starten, es öffnet sich ein cmd.exe Fenster und stellt die Verbindung wie gewünscht geplant.

Was ist falsch? Gibt es eine Möglichkeit plink.exe merkt es nicht in einem realen Shell läuft? Wenn ja, wie kann ich umgehen es, wie das Startmenü „prompt“ tut?

Ich hoffe, diese Frage ist direkt am SO, da sie, wenn auch speziell für eine einzelne Anwendung, dreht sich um sie erfolgreich programmatisch starten.

War es hilfreich?

Lösung

Ja, diese Web legt nahe, dass Putty nervös über nicht-interaktive Anmeldungen wird. Wenn die vorgeschlagene Abhilfe nicht hilft, empfehle ich Sie bitten, Fragen zu diesem Thema an einem Putty-Support-Forum oder Superuser.com. Es hat sonst nichts mit der Process-Klasse oder der Sprache C # zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top