Kirjoittaja Aihe: Crontab ei tottele komentojani...Mikä neuvoksi?  (Luettu 6160 kertaa)

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Osaisiko joku auttaa äkkinäistä ja kertoa missä on vika kun tehtivien ajastus ei toimi kunnolla?
Elikkäs, crontabsilla olen koittanut saada varmuuskopiointia ajastettua. Ajastus ja kopiointi toimii hienosti, jos tarkoituksena on tehdä esim. varmuuskopio kahden kansion välillä vaikkapa koti-hakemistossa. Mutta sitten kun yritän samaa kannettavan ja palvelimen välillä (kotiverkossa) nousee tie pystyyn. Kopiointi onnistuu kyllä kyseisillä käskyillä läppärin ja palvelimen välillä jos kirjoitan loitsut suoraan päätteeseen mutta crontabsiin kirjoitettuna ei tapahdu mitään :-\  Missä mahtaa olla hämminki?

Alla on esimerkkinä crontab -e koodit joita olen käyttänyt...

# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
* * * * * rsync -ah --stats --progress /home/tarmo/Varmuuskopiot /home/tarmo/Kormuusvapiot/
* * * * * rsync -rtv -e 'ssh -p 8000 -i identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #1 : 08.04.17 - klo:21.54 »
Kokeile laittaa crontabiin rsync:n koko polku, eli /usr/bin/rsync
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #2 : 08.04.17 - klo:22.17 »
Nyt on kokeiltu vaan ei auttanut... :-\

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #3 : 08.04.17 - klo:22.59 »
Nyt on kokeiltu vaan ei auttanut... :-\

Voisin epäillä että ssh avaimesta on kyse, siis identi_rsa tiedostosta. Kokeile laittaa sillekin koko polku, mutta se ei välttämättä auta, etenkään jos avain on salasanasuojattu. Joku tietävämpi osannee opastaa lisää.

Lokitiedosto /var/log/auth.log kannattaa vilkaista, josko sieltä saisi vinkkiä.
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #4 : 08.04.17 - klo:23.57 »
Alkuun olinkin ongelmissa avaimen kanssa, enkä meinannut saada tätä varmuuskopiointia toimimaan ilman salasanan kirjoitusta. Kuitenkin aikani keskustelupalstoja luettuani löysin oikeat komennot ja kopiointi alkoi onnistua suoraan päätteestä ilman salasanoja. Siis juurikin kyseisiä avaimia käyttäen...Toivotaan että joku keksii keinon tähänkin ongelmaani.
Kiitos vaan avusta  :)

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #5 : 09.04.17 - klo:00.13 »
Alkuun olinkin ongelmissa avaimen kanssa, enkä meinannut saada tätä varmuuskopiointia toimimaan ilman salasanan kirjoitusta. Kuitenkin aikani keskustelupalstoja luettuani löysin oikeat komennot ja kopiointi alkoi onnistua suoraan päätteestä ilman salasanoja. Siis juurikin kyseisiä avaimia käyttäen...Toivotaan että joku keksii keinon tähänkin ongelmaani.
Kiitos vaan avusta  :)

Kokeilitko koko polkua avaimeen, kuten raimo neuvoi? Cron ei varmaankaan suorita komentoa käyttäjän kotihakemistossa.

Koodia: [Valitse]
* * * * * /usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/

Itse tekisin tuosta komennosta skriptin, jonka voisi siististi ajaa crontabissa tai komentorivillä:

Koodia: [Valitse]
#!/bin/sh
/usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/

Tallenna vaikka nimellä /home/tarmo/backup, aseta suoritettavaksi ja kopioi /usr/local/bin -hakemistoon:

Koodia: [Valitse]
chmod a+x backup
sudo mv backup /usr/local/bin/

Skriptiin voi sitten helposti kirjoitella muutakin logiikkaa varmuuskopioiden ylläpitoon.

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #6 : 09.04.17 - klo:00.57 »
Kiitti vihjeistä. Yritän tehdä niin kuin neuvoit vaan kun on vasta reilu 3 kk tätä ubuntu/linux harrastusta takana niin en lupaa että osaan täysin noudattaa ohjeita  ::)

Siis lisäsin sen koodi-litanian alkuun sen /usr/bin/ , vaan ei tilanne siitä miksikään muuttunut.

Komento: * * * * * rsync -rtv -e 'ssh -p 8000 -i identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/

toimii haluamallani tavalla päätteeseen kirjoitettuna muttei kuitenkaan siihen crontabiin...
Siitä tuliki mieleen, että mitä eroa on jos kirjoitan tuohon koodiin tuon --progress tai sitten --delete komennot. Olen huomannut vain että se antaa itse kopiointi tapahtumasta vähän eri tietoja, onko sillä muuta väliä?

Näin äkkinäisenä kysyisin, että mites sen tallentamani "skriptin" sitten saan sinne crontabiin?  ???

Kiitos!

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #7 : 09.04.17 - klo:01.15 »
Kiitti vihjeistä. Yritän tehdä niin kuin neuvoit vaan kun on vasta reilu 3 kk tätä ubuntu/linux harrastusta takana niin en lupaa että osaan täysin noudattaa ohjeita  ::)

Siitä se ura urkenee.  :)

Siis lisäsin sen koodi-litanian alkuun sen /usr/bin/ , vaan ei tilanne siitä miksikään muuttunut.

Komento: * * * * * rsync -rtv -e 'ssh -p 8000 -i identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/

Muuta identi_rsa -> /home/tarmo/identi_rsa
Olettaen siis että tiedosto sijaitsee tuossa polussa. Muuten ssh ei löydä avaintiedostoa, jos komento suoritetaan jossain muualla kuin kotihakemistossasi.

Eli näin:

Koodia: [Valitse]
* * * * * /usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/identi_rsa' --progress /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/
Huomaathan, että cronin aikamääre * * * * * suorittaa komentoa jatkuvasti minuutin välein. Käytännössä haluat ehkä hieman pidemmät välit siirtoihin. Kerran tunnissa tai kerran päivässä esimerkiksi.

Kerran tunnissa, kymmentä yli tasan:
Koodia: [Valitse]
10 * * * *
Kerran päivässä, klo 6.30 (tai kun kone käynnistetään sen jälkeen):
Koodia: [Valitse]
30 6 * * *

Siitä tuliki mieleen, että mitä eroa on jos kirjoitan tuohon koodiin tuon --progress tai sitten --delete komennot. Olen huomannut vain että se antaa itse kopiointi tapahtumasta vähän eri tietoja, onko sillä muuta väliä?

--progress näyttää kopioinnin edistymisen siirron aikana.
--delete poistaa ylimääräiset vanhat tiedostot kohdehakemistosta.

Crontabissa --progress on tarpeeton ja oikeastaan vähän haitallinenkin, koska listaus päätyy johonkin lokiin. --delete taas on vaarallinen varmuuskopioidessa, koska se hävittää varmuuskopiosta tiedostoja, jos ne on poistettu lähteestä.


Näin äkkinäisenä kysyisin, että mites sen tallentamani "skriptin" sitten saan sinne crontabiin?  ???

Viittaamalla siihen kuten mihin tahansa ohjelmaan:

Koodia: [Valitse]
* * * * * /usr/local/bin/backup
« Viimeksi muokattu: 09.04.17 - klo:01.25 kirjoittanut nm »

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #8 : 09.04.17 - klo:01.22 »
Kiitos vaivannäöstä. Koetan noilla vinkeillä päästä eteenpäin ja palaan asiaan jos ei ratkaisua löydy...

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #9 : 09.04.17 - klo:12.09 »
Skriptin sain toimimaan, eli kun kirjoitan päätteeseen nyt tuon "backup", kopioituu tiedostot palvelimelle. En vain onnistu siinä ajastuksessa, crontab ei ole tietävinään sille asettamastani kopiointitehtävästä...  :-\
Olen kokeillut samaa varmuuskopiointia myös pöytäkoneen ja palvelimen välillä mutta ei toimi crontab siinäkään.
Onkos olemassa muuta konstia, jolla varmuuskopioinnin saisi tehtyä? Esim automaattisesti vaikka koneelle kirjautumisen yhteydessä?

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #10 : 09.04.17 - klo:13.11 »
Skriptin sain toimimaan, eli kun kirjoitan päätteeseen nyt tuon "backup", kopioituu tiedostot palvelimelle. En vain onnistu siinä ajastuksessa, crontab ei ole tietävinään sille asettamastani kopiointitehtävästä...  :-\
Olen kokeillut samaa varmuuskopiointia myös pöytäkoneen ja palvelimen välillä mutta ei toimi crontab siinäkään.

Näytä skriptin sisältö:

Koodia: [Valitse]
cat /usr/local/bin/backup

Voit ohjata skriptin stdout ja stderr -ulostulot sopivaan lokitiedostoon, niin virheilmoitukset ovat luettavissa sieltä.
Eli muokkaa crontab-rivi tällaiseksi:

Koodia: [Valitse]
* * * * * /usr/local/bin/backup >> /home/tarmo/backup.log 2>&1
Tuo siis kirjoittaa backup-skriptin listaamat virheet ja muut tiedot kotihakemistossasi sijaitsevaan backup.log -tiedostoon.
Vaihtoehtoisesti ohjauksen  >> /home/tarmo/backup.log 2>&1 voisi lisätä backup-skriptissä olevan rsync-komennon perään.


Onkos olemassa muuta konstia, jolla varmuuskopioinnin saisi tehtyä? Esim automaattisesti vaikka koneelle kirjautumisen yhteydessä?

Voit lisätä skriptin Käynnistettävät ohjelmat -asetustyökalun listaan, niin se ajetaan työpöydän avautuessa.

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #11 : 09.04.17 - klo:19.06 »
Skripti on tässä

#!/bin/sh
/usr/bin/rsync -rtv -e 'ssh -p 8000 -i /home/tarmo/.ssh/id_rsa' /home/tarmo/Varmuuskopiot master@192.168.1.169:/home/master/

ja se backup.log tässä

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

Eli taitaa se vika olla kuitenkin siellä salasana puolella...Kumma miksi se päätteeseen suoraan laittaessa toimii  :-\

Olen kyllä ollut onnistuvinani avaimen luonnissa ja vielä palvelimelle kopioinnissakin. SSH yhteys pelaa ilman salasanan kyselyä.

Nyt kuitenkin kokeeksi loin juuri uuden avainparin. Nyt en enää onnistu kirveelläkään kopioimaan sitä julkista puolta palvelimelle  :o
Koodiksi koetin seuraavaa komentoa

scp /home/tarmo/.ssh/id_rsa-backup.pub master@192.168.1.169 -p 8000 :/home/master/.ssh/
:/home/master/

Virheeksi tulee tuommoinen: No such file or directory

Hellurei... :D

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #12 : 10.04.17 - klo:13.30 »
Sain varmuuskopioinnin toimimaan aina koneelle kirjautuessa, eli nyt kuitenkin edes silloin tällöin tulee kansiosta varmuuskopio.
Vaan sitä crontabia en saa toimimaan. Aina tulee se sama virhe avaimista ja salasanoista. Olen tyhjentänyt palvelimelta (/home/maste/.ssh), kuin myös muilta koneilta kyseisen kansion ja luonut uudet avaimet. Kopioinut avaimet palvelimelle (näkyy tiedostossa /home/master/.ssh/authorized_keys), eli kait ne on oikeissa paikoissa minne ne on tarkoitettukin? SSH yhteys toimii avaimia käyttämällä (ei kysele salasanoja).
Joku helppo ratkaisu tähän varmaan on, vaan äkkinäisenä en sitä keksi...

SuperOscar

  • Käyttäjä
  • Viestejä: 4063
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #13 : 10.04.17 - klo:14.09 »
Äkkiseltään käy mielessä ainakin sellainen, että cron suoritetaan root-käyttäjänä, mutta salasanaton kirjautumisesi on viritetty toimimaan omalla käyttäjätunnuksellasi. Pääkäyttäjällä on tietysti oikeus lukea tiedostot kotihakemistostasi, mutta voipi olla, ettei se vielä riitä, vaan sinun pitäisi virittää su -c -komennolla skripti suorittumaan omalla käyttäjätunnuksellasi.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #14 : 10.04.17 - klo:14.32 »
Sain varmuuskopioinnin toimimaan aina koneelle kirjautuessa, eli nyt kuitenkin edes silloin tällöin tulee kansiosta varmuuskopio.
Vaan sitä crontabia en saa toimimaan. Aina tulee se sama virhe avaimista ja salasanoista. Olen tyhjentänyt palvelimelta (/home/maste/.ssh), kuin myös muilta koneilta kyseisen kansion ja luonut uudet avaimet. Kopioinut avaimet palvelimelle (näkyy tiedostossa /home/master/.ssh/authorized_keys), eli kait ne on oikeissa paikoissa minne ne on tarkoitettukin? SSH yhteys toimii avaimia käyttämällä (ei kysele salasanoja).
Joku helppo ratkaisu tähän varmaan on, vaan äkkinäisenä en sitä keksi...

Viittaa edelleen siihen, että SSH-avain on suojattu salasanalla. Kokeilin samanlaista cron-ajastettua rsync-siirtoa omilla koneillani, ja se toimi ongelmitta avaintunnistuksella, kun avainta ei ole suojattu salasanalla.

Minkä ohjeen mukaan teit sen avaimen? Esimerkiksi tämä Githubin ohje käy, kunhan kohdassa 4 jätät salasanan määrittelemättä, eli ohitat kyselyn enterillä. Tällöin avainta ei myöskään tarvitse antaa ssh-agentin hallintaan.


Äkkiseltään käy mielessä ainakin sellainen, että cron suoritetaan root-käyttäjänä, mutta salasanaton kirjautumisesi on viritetty toimimaan omalla käyttäjätunnuksellasi. Pääkäyttäjällä on tietysti oikeus lukea tiedostot kotihakemistostasi, mutta voipi olla, ettei se vielä riitä, vaan sinun pitäisi virittää su -c -komennolla skripti suorittumaan omalla käyttäjätunnuksellasi.

Oletettavasti tamrock on muokannut käyttäjäkohtaista crontabia (crontab -e), jolloin komennot suoritetaan kyseisellä käyttäjätunnuksella. Yllä esitetty rsync-komento toimii kyllä myös roottina, kunhan SSH-avaimen polku on määritelty.
« Viimeksi muokattu: 10.04.17 - klo:14.34 kirjoittanut nm »

tamrock

  • Käyttäjä
  • Viestejä: 144
  • Zervuska haidis
    • Profiili
Vs: Crontab ei tottele komentojani...Mikä neuvoksi?
« Vastaus #15 : 10.04.17 - klo:14.47 »
Nyt sain sen varmuuskopioinnin tomimaan crontabillakin  :D
Eli vika oli siinä, että avaimen luonti vaiheessa olin asettanut sille salasanan. Kun loin nyt uuden avaimen, ilman salasanaa (pelkkä enter) niin jopas vaan alkoi tiedostot kopioitumaan.

Kiitos avusta kaikille!