Problem mit Plink und WaitForSingleOject
-
Hi,
ich versuche mit CreateProcess und WaitForSingleObject über Plink eine SSH-Verbindung aufzubauen, nun möchte Plink eine Bestätigung ob der unbekannte hostkey abgespeichert werden soll, mir ist es nicht möglich diese Abfrage automatisch zu bestätigen. Folgender Code etwas zensiert
... sprintf(execution_string,"cmd /c plink.exe -ssh -2 root@x.x.x.x -pw xxx -m put.log 1>out.log 2>error.log"); execution(execution_string); ... int execution(wchar_t *cmdline){ STARTUPINFO start; PROCESS_INFORMATION proc; memset(&start, 0, sizeof(start)); start.cb = sizeof(start); if(!CreateProcess(NULL, // No module name (use command line) cmdline, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable TRUE, // Set handle inheritance to FALSE NORMAL_PRIORITY_CLASS, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &start, // Pointer to STARTUPINFO structure &proc) // Pointer to PROCESS_INFORMATION structure ){ printf( "CreateProcess failed (%d).\n", GetLastError() ); return -1; } // Wait until child process exits. WaitForSingleObject( proc.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( proc.hProcess ); CloseHandle( proc.hThread ); return 0; }
(den Rückgabewert von WaitForSingleObject müsste noch ausgewertet werden!)
im error.log befindet sich dann der Text bzw die Frage, ob der Hostkey gespeichert werden soll.
Das laufende Konsolenfenster wartet nun auf eine Eingabe(wie bei gets oder scanf), drücke ich y und bestätige läuft das Programm weiter.Wie kann ich das automatisieren und ohne y in meiner Konsole?
Mir fällt jetzt nur ein einen Tastendruck zu simulieren mit SendInput, gibt es einen besseren Weg?
hier die plink Parameter zur Info
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port
Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port
Forward local port to remote address
-R [listen-IP:]listen-port:host:port
Forward remote port to local address
-X -x enable / disable X11 forwarding
-A -a enable / disable agent forwarding
-t -T enable / disable pty allocation
-1 -2 force use of particular protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for authentication
-m file read remote command(s) from file
-s remote command is an SSH subsystem (SSH-2 only)
-N don't start a shell/command (SSH-2 only)Für Kritik/Verbesserungsvorschläge bin ich offen
-
-
super, dann kann ich mir diesen umständlichen logfile-Kram sparen
Danke