Avatar billede michael_stim Ekspert
15. april 2011 - 09:46 Der er 5 kommentarer og
1 løsning

Søger råd til "uploadscript".

Hej,

Skal have en applikation/script/batch som lægges/installeres på en client PC. Alt hvad den applikation skal gøre er at uploade en csv fil fra en given plads til serveren på en given plads i en given antal intervaller. Til at starte med bliver det win maskiner. Kan ikke rigtigt finde ud af hvad der er smartest/hurtigst. Installere en FTP client? Skrive 7000 linier kode i C++?

Nogen der har erfaringer?
Avatar billede Spotgun Seniormester
15. april 2011 - 09:49 #1
En lavpraktisk løsning kunne være et scheduleret powershell script, som uploader filerne. Jeg har et eksempel liggende hvis det har interesse?
Avatar billede michael_stim Ekspert
15. april 2011 - 09:52 #2
Absolut, alt modtages med kyshånd ;o)
Avatar billede Spotgun Seniormester
15. april 2011 - 10:03 #3
Gem nedenstående i en .ps1 fil, opsæt scheduleren til at køre powershell med argumentet "-command <sti>\<script>.ps1". Det kan også være du skal sætte powershells execution policy til "Remote Signed" før det virker korrekt, det afhænger lidt af hvordan maskinen er konfigureret.

Den uploader alle .csv filer i samme mappe som scriptet, men du kan jo bare tilpasse den efter behov.

Det er også muligt at få tilsendt mails ved endt upload eller hvis der opstår fejl.


# Variables
$Ftp = 'ftp.domain.com/'" target="_blank">ftp://username:password@ftp.domain.com/'
$FileType = "*.csv"
$SmtpHost = "mail.domain.com"

Try
{
    # Initialization
    $WebClient = New-Object System.Net.WebClient
    $SmtpClient = New-Object System.Net.Mail.SmtpClient
    $SmtpClient.Host = $SmtpHost
   
    $Files = @(Get-ChildItem .\ -Filter $FileType)
   
    If ($Files.Count)
    {
        ForEach($File in $Files)
        {
            Write-Host "Uploading: $File"
            $Uri = New-Object System.Uri($Ftp + $File.Name)
            $WebClient.UploadFile($Uri, $File.FullName)
        }
        $Count = $Files.Count
        $Body = "$Count files were uploaded to server."
    }
    Else
    {
        Write-Host "No files to upload!"
        $Body = "No files to upload to server."
    }
    # Uncomment to get status e-mails
    # $SmtpClient.Send("noreply@domain.com", "recipient@domain.com", "Upload report", $Body) 
}
Catch [Exception]
{   
    $Body = $_.Exception.Message
    # Uncomment to get error mails
    # $SmtpClient.Send("noreply@domain.com", "recipient@domain.com", "Error in upload", $Body) 
    throw $_
}
Avatar billede Spotgun Seniormester
15. april 2011 - 10:05 #4
Nå, eksperten ødelagde FTP linien i starten af scriptet.

$Ftp = 'ftp_:_//_username_:_password_@_ftp.domain.com/_'

Fjern alle underscores i ovenstående, så skulle den være korrekt :)
Avatar billede michael_stim Ekspert
15. april 2011 - 10:44 #5
Merci. Så skal man bare finde ud af hvordan den der scheduler fungerer. Arbejder ikke så meget i Win, men det ser overskueligt ud.
Avatar billede michael_stim Ekspert
15. april 2011 - 15:51 #6
Den skriver bare at den ikke kan finde nogen fil. Scriptet ligger i samme mappe som CSV-filen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester