AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Text Datei von Delphi Programm an einen Linux PC senden

Text Datei von Delphi Programm an einen Linux PC senden

Ein Thema von A.Griffin · begonnen am 14. Mär 2017 · letzter Beitrag vom 21. Mär 2017
 
Jumpy
Online

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#21

AW: Text Datei von Delphi Programm an einen Linux PC senden

  Alt 16. Mär 2017, 14:50
Wir haben das mal ungefähr so gemacht:

Delphi-Quellcode:
function SendFile:Boolean;
var output:String;
begin
output:=CaptureConsoleOutput(Command);
Result:=Pos('100%',output)>0;
end;


//Diese Funktion hab ich mal irgendwo gefunden (hier in der DP ?)
function CaptureConsoleOutput(const ACommand: String):String;
const
    CReadBuffer = 2400;
var
    saSecurity: TSecurityAttributes;
    hRead: THandle;
    hWrite: THandle;
    suiStartup: TStartupInfo;
    piProcess: TProcessInformation;
    pBuffer: array [0 .. CReadBuffer] of AnsiChar;
    dBuffer: array [0 .. CReadBuffer] of AnsiChar;
    dRead: DWord;
    dRunning: DWord;
    erg:String;
begin
    saSecurity.nLength := SizeOf(TSecurityAttributes);
    saSecurity.bInheritHandle := True;
    saSecurity.lpSecurityDescriptor := nil;
    erg:='';
    if CreatePipe(hRead, hWrite, @saSecurity, 0) then
    begin
        FillChar(suiStartup, SizeOf(TStartupInfo), #0);
        suiStartup.cb := SizeOf(TStartupInfo);
        suiStartup.hStdInput := hRead;
        suiStartup.hStdOutput := hWrite;
        suiStartup.hStdError := hWrite;
        suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        suiStartup.wShowWindow := SW_HIDE;

        if CreateProcess(nil, pChar(ACommand+' '), @saSecurity, @saSecurity, True, NORMAL_PRIORITY_CLASS, nil, nil, suiStartup, piProcess) then
        begin
            //repeat
                dRunning := WaitForSingleObject(piProcess.hProcess, 2000);
                Application.ProcessMessages();
                repeat
                    dRead := 0;
                    ReadFile(hRead, pBuffer[0], CReadBuffer, dRead, nil);
                    pBuffer[dRead] := #0;
                    OemToCharA(pBuffer, dBuffer);
                    erg:=dBuffer;
                until (dRead < CReadBuffer);
            //until (dRunning <> WAIT_TIMEOUT);
            CloseHandle(piProcess.hProcess);
            CloseHandle(piProcess.hThread);
        end;
        CloseHandle(hRead);
        CloseHandle(hWrite);
    end;
    Result:=erg;
end;

function Command: String;
var path:String;
begin
  //hier lag die PSCP.exe mit im Programm-Verzeichnis, daher:
  path:=ExtractFilePath(Application.ExeName);
  Result:=path+'pscp.exe -P '+Port+' -pw '+pswrd+' '+
          Dateienname+' '+username+'@'+URL+':'+targetdir;

  //alt mit keyfile im Programm-Verzeichnis:
  //Result:=path+'pscp.exe -P '+Port+' -i '+path+keyfile+' '+
  // Dateiename+' '+username+'@'+URL+':'+targetdir;
end;
Bei fernsteuern der ganzen Putty-Dinger muss man nur aufpassen, wenn mal der Server wechselt oder so, da Putty dann nachfragt, wenn eine andere Signatur gefunden wird (macht ja Sinn). Aber wenn das im Batch-Betrieb passiert ist das nervig, wobei es da wohl auch Parameter gibt, die dan ggf. verhindern können?
Ralph
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz