Sida 1 av 1

Ladda upp fil via FTP

Postat: 11 feb 2014, 14:51
av Johnny Rosenberg
Håller på med ett litet skript som skapar några filer som sedan ska laddas upp någonstans via FTP, men jag har inte lyckats med det sistnämnda än. Har försökt med det redan installerade programmet ftp men inte fått till det.
~/.netrc:

Kod: Markera allt

 machine ftp.bredband.net login johnnyguitar password <mitt lösenord>
Det är själva skriptet (Bash) som jag är osäker på. Skulle vara trevligt att få se ett konkret exempel på hur det skulle kunna se ut.
Vad jag förstått ska skriptet nu inte behöva innehålla några av de data som redan finns i .netrc, är det rätt uppfattat?
Här är ett exempel på vad jag vill ska hända:
  • Ftp-platsen öppnas
  • Den lokala filen ${HOME}/en/mapps/fil.här kopieras till rotmappen på ftp-platsen (i detta fall ftp.bredband.net/johnnyguitar/
  • Ftp-platsen lämnas (quit)

Re: Ladda upp fil via FTP

Postat: 11 feb 2014, 14:57
av andol
Har för mig att ncftp torde vara mer skriptbart. Annars skulle jag nog personligen använda curl, vilket fixar en väldans massa protokoll, inklusive ftp.

Utanför ämnet: Eller ja, egentligen så skulle jag ju personligen föredra att inte prata ftp över huvud taget - http://mywiki.wooledge.org/FtpMustDie

Re: Ladda upp fil via FTP

Postat: 11 feb 2014, 15:20
av Osprey
När jag har scriptat ftp så har det funkat bra om jag har riktat om stdin.

Det vill säga, jag startar det med:

Kod: Markera allt

ftp -n < ftp-commands
...där "ftp-commands" är en fil som innehåller de kommandon jag vill köra. Inehållet kan till exempel vara:

Kod: Markera allt

open ftp.kernel.org
user <användarnamn> <lösenord>
mput <file>
mget <file>
   .
   .
   .
quit
Och det första ftp-kommandot kan givetvis ligga i ett script som gör en massa annat, liksom "<< EOD" bör funka för de följande ftp-kommandona om man inte vill ha det i en separat fil...

Re: Ladda upp fil via FTP

Postat: 11 feb 2014, 21:09
av Johnny Rosenberg
andol skrev:Utanför ämnet: Eller ja, egentligen så skulle jag ju personligen föredra att inte prata ftp över huvud taget - http://mywiki.wooledge.org/FtpMustDie
I detta fall vill jag ladda upp filerna till en befintlig plats som min internetleverantör tillhandahåller, och vad jag vet går det bara att göra via ftp. Det är inte så att jag har någon egen server eller så.

Får se vad som händer snart när jag flyttar tillbaka till mina hemtrakter. Blir väl annan internetleverantör, kanske med andra förutsättningar, vad vet jag?

Re: Ladda upp fil via FTP

Postat: 11 feb 2014, 21:11
av Johnny Rosenberg
Osprey skrev:När jag har scriptat ftp så har det funkat bra om jag har riktat om stdin.

Det vill säga, jag startar det med:

Kod: Markera allt

ftp -n < ftp-commands
...där "ftp-commands" är en fil som innehåller de kommandon jag vill köra. Inehållet kan till exempel vara:

Kod: Markera allt

open ftp.kernel.org
user <användarnamn> <lösenord>
mput <file>
mget <file>
   .
   .
   .
quit
Och det första ftp-kommandot kan givetvis ligga i ett script som gör en massa annat, liksom "<< EOD" bör funka för de följande ftp-kommandona om man inte vill ha det i en separat fil...
Fast jag har i och för sig inget emot att använda en separat fil.
Vad är det för skillnad på mput och bara put?
Och när det gäller mput, kan man ange filnamn med variabler (exempelvis ${HOME}/mapp/undermapp)?
Om jag bara har en enda ”machine” i .netrc, räcker det inte med att bara skriva open då, eller hur bär man sig åt?

Re: Ladda upp fil via FTP

Postat: 11 feb 2014, 21:18
av Johnny Rosenberg
Hittade ett svar själv: mput används om man vill ange flera filer, verkar det som. I mitt skript kommer det alltid att röra sig om två filer varje gång man kör skriptet, så det blir väl enklast med mput då, i mitt fall.

Re: Ladda upp fil via FTP

Postat: 11 feb 2014, 23:47
av Osprey
Jo precis som du skriver så är skillnaden mellan "put" och "mput" just att mput kan ta flera filer och även wildcards etc. och samma sak gäller för get/mget. Eftersom en enda fil också funkar alldeles utmärkt så har jag själv inte använt put och get på länge, det blir liksom mput och mget oavsett om det behövs eller inte...

Med bara en enda "machine" i .netrc så borde det räcka med en blank open tycker jag och i det läget kan du antagligen skippa "-n" i ftp kommandot också, liksom angivelse av username/password i ftp-kommando-filen, eftersom detta isåfall finns angivet i .netrc

Själv har jag mest gjort sådana här script i Unix och då har inte .netrc funnits, så exakt hur bra det funkar med den vet jag inte, men förmodligen funkar det jättebra om du anger "remote-burken" och inloggningskriteria i den också...