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


Anmelden zum Antworten