Script mis kopeerib faili ftp serverisse

Linuxi baasil serverite haldamine jms

Moderaator: Moderaatorid

Ruutz
Pingviini külastaja
Pingviini külastaja
Postitusi: 21
Liitunud: 27.11.2007, 10:29

Script mis kopeerib faili ftp serverisse

Postitus Postitas Ruutz »

Oleks vaja ühte scripti mis kopeeriks faili ftp serverisse(asub välisvõrgus). Endal mõistus otsas neid mida netis leidnud olen ei tööta.
Kasutaja avatar
obundra
Vana Pingviin
Vana Pingviin
Postitusi: 1213
Liitunud: 04.08.2005, 03:00

Postitus Postitas obundra »

Just äsja netist otsitud, testitud ja töötav :).Tekita mingi fail(näiteks ftpskript) sisuga:

Kood: Vali kõik

#!/bin/sh
HOST='sinusftperver'
USER='ftpkasutaja'
PASSWD='ftpparool'
FILE='kopeeritav.fail'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0
anna sellele käivitusõigus, muuda kasutaja, parool jne selliseks nagu sul vaja ja käivita ./ftpskript
Muidugi pole eriti hea mõte hoida paroole niimoodi skriptis, turvalisem oleks kasutada sftp või scp ja autentimist võtmetega.
Juhend kah http://www.stratigery.com/scripting.ftp.html

Näiteks scp abil käiks umbes niimoodi, ennem peab mõlema masina vahel olema seadistatud võtmetega autentimine

Kood: Vali kõik

#!/bin/sh
/usr/bin/scp -i /home/kasutaja/võtmefail /fail/kopeerimiseks kasutaja@hostinimi:/kuhu/fail/kopeerida/
Jutt http://kuutorvaja.eenet.ee/wiki/Ssh#Kas ... .B5tmetega
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

Oleks huvitatud vastupidisest scriptist ehk siis, et määratud ajal võtab script ühendust välise serveriga ja laadib/sünkroonib sealt teatud kausta/faili?

Usun, et see vast on täiesti realselt võimalik!?
Kasutaja avatar
antik2
Vana Pingviin
Vana Pingviin
Postitusi: 634
Liitunud: 09.10.2006, 13:17

Postitus Postitas antik2 »

-IFFI- kirjutas:Oleks huvitatud vastupidisest scriptist ehk siis, et määratud ajal võtab script ühendust välise serveriga ja laadib/sünkroonib sealt teatud kausta/faili?

Usun, et see vast on täiesti realselt võimalik!?
Asendad eelnevas skriptis ühe rea:

put $FILE

sellega:

get $FILE
Kasutaja avatar
obundra
Vana Pingviin
Vana Pingviin
Postitusi: 1213
Liitunud: 04.08.2005, 03:00

Postitus Postitas obundra »

-IFFI- kirjutas:Oleks huvitatud vastupidisest scriptist ehk siis, et määratud ajal võtab script ühendust välise serveriga ja laadib/sünkroonib sealt teatud kausta/faili?

Usun, et see vast on täiesti realselt võimalik!?
Lisaks ftp-le võid näituseks rsynci võimalusi katsetada
http://kuutorvaja.eenet.ee/wiki/Rsync
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

Olen vahepeal üritanud seda scripti näppida kui mahti olen saanud aga see kõik on mulle kui raketiteadus, mina seda toimima ei saa. Võimalusel paluks "puust ja punaseks" teha asi. Puurinud ka guuglit aga seal tundusid asjad väga keerulised. Eks asi jääb ka omal keele taha ja valede otsingusõnade taha kinni.

rsync ja muud analoogid katsetatud, ei õnnestu mul neid õigesti seadistada tööl.:(

Idee on siis järgmine, et kodune masin käiks läbi SSH minu VPS-is ja kopeeriks või sünkrooniks vpsis asuva BACKUP kaustas olevaid faile kodusesse arvuti. Asuvad mul seal www ja mysql backupid. Pole vahet kas sünkroonib kogu kausta või siis seal asuvaid faile.

Tegin siis sellise scripti omal testiks

Kood: Vali kõik

#!/bin/sh
HOST='sftp://279.433.333.932'
USER='kasutajanimi'
PASSWD='parool'
FILE='/var/backups'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
get $FILE
quit
END_SCRIPT
exit 0
Salvestasin selle siis ./ftpskript.sh

Avasin terminali ja logisin ruuduks ennast ning siis liikusin CD käsuga kausta kus script asub ning kui sisestasin ./ftpskript sain vastuseks bash: ./ftpskript.sh: Permission denied

Oleksin ülimalt rõõmus kui saaks selle skripti tööle ja päkupid oma masina :D
Kasutaja avatar
mihkel
Vana Pingviin
Vana Pingviin
Postitusi: 1284
Liitunud: 16.04.2006, 13:08

Postitus Postitas mihkel »

Kui saad sellise veateate, siis esimene asi oleks kontrollida õigusi :P
Mida näitab
ls -l
selle skripti kataloogis
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

sellele failile näitab nii.

-rw-rw-r-- 1 iffi iffi 186 juuni 13 21:58 ftpskript.sh

ega ma noid õigusi jah ei oska miskit määrata.
Kasutaja avatar
mihkel
Vana Pingviin
Vana Pingviin
Postitusi: 1284
Liitunud: 16.04.2006, 13:08

Postitus Postitas mihkel »

Käivitusõigus ju puudu.
chmod +x ftpskript.sh
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

Nüüd miski vale aadres. Ise kasutan küll jah SFTP-d aga siin ei lase ka seda või taas ma ei oska.

Terminalist selline vastus

Kood: Vali kõik

root@iffi-iffi:/home/iffi/Dokumendid# ./ftpskript.sh
ftp: ftp://***.***.***.*** Name or service not known
Not connected.
Not connected.
Not connected.
Kasutaja avatar
obundra
Vana Pingviin
Vana Pingviin
Postitusi: 1213
Liitunud: 04.08.2005, 03:00

Postitus Postitas obundra »

Hosti nimi su skriptis peab olema ainult nimi, ehk siis nime eest jäta igasugu ftp:// ja sftp:// ära.
Kui scp tahad kasutada, siis piisab näiteks sellest:

Kood: Vali kõik

/usr/bin/scp -r -i /home/kasutaja/võtmefail kasutaja@hostinimi:/kaust/mis/kopeerida/ /kuhu/kopeerida/
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

Tänud, sain toimima. Aga kuidas panna asi automaatselt iga öö tööle? ja kuidas salvestada sinna scripti oma VPS SSH parool, et ta seda ei küsiks.

Ennem vpsi ssh parooli küsis Enter passphrase for key '/home/iffi/.ssh': sisestasin sinna number 1 ja siis seejärel vpsi ssh parooli:!
illukas
Vana Pingviin
Vana Pingviin
Postitusi: 2036
Liitunud: 24.10.2006, 21:35

Postitus Postitas illukas »

croniga panedki öösiti tööle ja skripti sisse kirjutad mingi muutujaga ka parooli
PS root accounti ei ole mõistlik selleks kasutada, tee mingi suvaline kasutaja just ja ainult selleks tööks- veel hea oleks kui kasutaja on chrooditud ja kõikvõimalikud limitid on peal jne... übersuper oleks talle acl-idega tervele failisüsteemile ka deny teha...
seda siis ideaalis
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

Ok, ja tänud vihje eest aga nagu ma eespool mainisin pole ma suuteline oma peaga seda croni ja miskit muutujat sinna juurde keevitama ja cronni käivitama.

Jah, olen juba korduvalt saanud "mööda näppe" selle root õigustes VPS-i näpimisest :P

-E- Cronile vist sain pihta sinna tuleb vist lisada ette aeg....hetkel siis näeb scripti algus välja selline

Kood: Vali kõik

* 0 * * */usr/bin/scp -r -i....
Nii palju kui ma arusain siis see 0 peaks saatma automaatselt selle scripti faile tooma. Olen ma õigel teel?

Hetkel ei kannata testida kuna scripti on vaja saada veel nod paroolid sisse, et ei küsiks igal käivitamisel.
Kasutaja avatar
akbgf
Vana Pingviin
Vana Pingviin
Postitusi: 763
Liitunud: 07.10.2009, 09:04

Postitus Postitas akbgf »

-IFFI- kirjutas:Cronile vist sain pihta sinna tuleb vist lisada ette aeg....hetkel siis näeb scripti algus välja selline

Kood: Vali kõik

* 0 * * */usr/bin/scp -r -i....
Nii palju kui ma arusain siis see 0 peaks saatma automaatselt selle scripti faile tooma. Olen ma õigel teel?
Enamvähem. Pane esimese tärni asemele ka mingi number, muidu hakkab käsku täitma iga minut, kui kellaaja tunninäit on null.

Täidetavaks pane /usr/bin/scp asemele oma skript
/home/iffi/Dokumendid/ftpskript.sh

Croni proovimiseks tee lihtsam skript, näiteks

:
date
echo 'Tere IFFI!'

Seda võid lasta julgesti igal kellaajal käima.
illukas
Vana Pingviin
Vana Pingviin
Postitusi: 2036
Liitunud: 24.10.2006, 21:35

Postitus Postitas illukas »

võtsin masinatest mingi suvalise scripti... jookseb küll rsynciga kuid lihtne mingit teist asja asemele tekitada.
Kui keegi viitsib selle wikisse ülesse panna oleks heameelega nõus
Manused
rsync.sh.zip
backup script rsync baasil
(781 Baiti) Allalaaditud 434 korda
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

Niih, asi siis nii kaugel, et croni asja sain käima ja selgeks ja nüüd jääb puudu veel aint see parooli küsimine.

Terminalis siis asi näeb hetkel välja nii kui käivitan oma scripti.

Kood: Vali kõik

iffi@iffi-iffi:~$ ./backup.sh
Enter passphrase for key '/home/iffi/.ssh': [I](siin vajutan lihtsalt enter)[/I]
root@***.***.***.***'s password: [I](ja siia pean siis sisestama parooli käsitsi)[/I]
Et kuidas siis saaks lahti sellest probleemist. Siis asi ka toimiks perfectselt.

illukas antud scripti pole veel proovinud aga uurisin sisu ja ei näinud sealgi võimalust kuhugi parooli kirjutada. Ei hakka veel seda testima, prooviks esmalt ikka oma leiutise käima saada.

Võib visata ka siia linke kuidas ja kuhu need paroolid kirjutama peab, ise ei suuda välja guugeldada.
Kasutaja avatar
akbgf
Vana Pingviin
Vana Pingviin
Postitusi: 763
Liitunud: 07.10.2009, 09:04

Postitus Postitas akbgf »

-IFFI- kirjutas:Niih, asi siis nii kaugel, et croni asja sain käima ja selgeks ja nüüd jääb puudu veel aint see parooli küsimine.
man ftp aitab.

Oma kodukataloogi .netrc faili pane vajalikud asjad kirja.
Kasutaja avatar
-IFFI-
Vana Pingviin
Vana Pingviin
Postitusi: 1411
Liitunud: 25.06.2005, 03:00

Postitus Postitas -IFFI- »

Nüüd sai vist pika googeldamise ja muu lugemisega valmis voolitud see .netrc fail sisuga;

Kood: Vali kõik

machine 192.168.22.45
login walker
password abc123 
macdef init
prompt 
as
mget rpt*.log
quit
Salvestasin /home/iffi/.netrc

chmoodisin #chmod 600 .netrc

Viskasin shelli käsu
# .netrc
ja väljund selline alates chmodimisest

Kood: Vali kõik

root@iffi-iffi:/home/iffi# chmod 600 .netrc
root@iffi-iffi:/home/iffi# .netrc
.netrc: command not found
root@iffi-iffi:/home/iffi# ./netrc
./netrc: line 1: machine: käsku ei ole

Login incorrect
iffi-iffi login: 
Login timed out after 60 seconds.
./netrc: line 3: password: käsku ei ole
./netrc: line 4: macdef: käsku ei ole
./netrc: line 5: prompt: käsku ei ole

root@iffi-iffi:/home/iffi# .netrc
.netrc: command not found

Et siis taas küsimused kus mis on valesti ja kuidas ma seda näitan selle ette ./backup.sh failile, et to sealt võtaks selle parooli? Cron on ka loodud hetkel testimise eesmärgil järgmisel kujul

Kood: Vali kõik

50 16 * * * /home/iffi/./backup.sh > /var/log/backup.log
Mõistus on täiesti otsas aga vist kaugel enam pole, et asi käima saada korralikult.
Kasutaja avatar
akbgf
Vana Pingviin
Vana Pingviin
Postitusi: 763
Liitunud: 07.10.2009, 09:04

Postitus Postitas akbgf »

-IFFI- kirjutas:Mõistus on täiesti otsas aga vist kaugel enam pole, et asi käima saada korralikult.
Eks ta paras puderkapsaatika on Sul.

Alustaks tagantpoolt.

> 50 16 * * * /home/iffi/./backup.sh > /var/log/backup.log

sinna iffi ja backup.sh vahele pole punkti vaja.

Millega backup.sh-is faile liigutatakse, kas ftp või scp-ga?
$HOME/.netrc on konfifail ftp jaoks. See ei kuulu täitmisele ei käsurealt ega skriptis.

Minul on ftp pakist lukemftp-1.5-733.1.i586. Selle man pakub ka käsurealt parooli andmise võimalust ja see töötab:

usage: ftp [-AadefginpRtvV] [-o outfile] [-P port] [-r retry]
[-T dir,max[,inc][[user@]host [port]]] [host:path[/]]
[file:///file] [ftp://[user[:pass]@]host[:port]/path[/]]
[http://[user[:pass]@]host[:port]/path] [...]

% ftp -o test.txt ftp://kasutaja:parool@my.host.ee/test.txt
Trying ???.??.1...
Connected to my.host.ee.
220 (vsFTPd 2.0.1)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Switching to Binary mode.
local: test.txt remote: test.txt
229 Entering Extended Passive Mode (|||18619|)
150 Opening BINARY mode data connection for test.txt (32808 bytes).
100% |*****************************************************| 32808 2.39 MB/s 00:00 ETA
226 File send OK.
32808 bytes received in 00:00 (2.38 MB/s)
221 Goodbye.

Faili asukoht on kasutaja kodukataloogi suhtes, nii et kui fail on /home/iffi/test.txt, siis ftp käsus jäetakse /home/iffi eest ära.

Siin ka näide ühe anonüümse ftp-sessiooni kirjeldusest .netrc-s, kus kasutaja on ftp ja parool on minu e-aadress:

Kood: Vali kõik

machine ftp.meteo.fr
login ftp 
password minu_kasutajanimi@my.host.ee
macdef init
binary
lcd public_html/weathergifs
cd tpsreel
get satt0.gif MF.gif
get isp.gif MFF.gif
close
bye
Tollast ftp-ga skripti pole enam alles, praegu saan need failid kätte wget-iga.

E:
Leidsin siiski üles. Ega seal polnudki midagi erilist,
mfr.sh, mis käivitati öösel croniga :

ftp ftp.meteo.fr >> ~/.crontab_log/MF_log 2>&1
set `tail \-1 ~/.crontab_log/MF_log`
if [ $1 = ftp: ]
then
ed -s [väike redigeerimine]
else
ed -s [väike redigeerimine]
fi

Kogu seda ed-ga redigeerimist pole Sul vaja.
Vasta