Ladda upp fil via FTP

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Ladda upp fil via FTP

Inlägg 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)
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: Ladda upp fil via FTP

Inlägg 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
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Ladda upp fil via FTP

Inlägg 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...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ladda upp fil via FTP

Inlägg 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?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ladda upp fil via FTP

Inlägg 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?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Ladda upp fil via FTP

Inlägg 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.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Ladda upp fil via FTP

Inlägg 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å...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Skriv svar

Återgå till "Terminalforum"