βοήθεια για sh που δημιουργεί dirs και mv FILE όταν πρέπει  Το θέμα επιλύθηκε

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

βοήθεια για sh που δημιουργεί dirs και mv FILE όταν πρέπει

Δημοσίευσηαπό lepidas » 27 Ιουν 2013, 16:19

Είναι μια webcamera, ανα 10 λεπτά στέλνει την εικόνα της(distrato.jpg) σε ενα χωρο server,
θέλουμε να κρατάει τις εικόνες ο server και να μη πατάει η μια πάνω στην άλλη,
προς το παρόν έχω κάνει

nano distrato-gallery
Κώδικας: Επιλογή όλων
#! /bin/bash
cd /var/www/snowguide.gr/distrato/webcam
for each in distrato.jpg;
do
  NEWNAME=$(date -r $each +"%d-%m-%Y_%H:%M").jpg

cp "$each" /var/www/snowguide.gr/distrato/webcam/gallery/"$NEWNAME"
done


και όντως οι εικονες μαζεύονται στο φάκελο, όμως ψάχνω ένα τρόπο να δημιουργείται φάκελος σύμφωνα με την ημερομηνία και να μπαίνουν μέσα οι φωτογραφίες.
Δηλαδή
Στις 11:59 σήμερα τη νύχτα θα πρέπει να
Κώδικας: Επιλογή όλων
mkdir /var/www/snowguide.gr/distrato/webcam/gallery/2013
mkdir /var/www/snowguide.gr/distrato/webcam/gallery/2013/6
mkdir /var/www/snowguide.gr/distrato/webcam/gallery/2013/6/28
mv /var/www/snowguide.gr/distrato/webcam/gallery/* /var/www/snowguide.gr/distrato/webcam/gallery/2013/6/28


Αύριο στις 11:59 τη νύχτα θα πρέπει να
Κώδικας: Επιλογή όλων
mkdir /var/www/snowguide.gr/distrato/webcam/gallery/2013/6/29
mv /var/www/snowguide.gr/distrato/webcam/gallery/* /var/www/snowguide.gr/distrato/webcam/gallery/2013/6/29


Τον άλλο μήνα θα πρέπει να
Κώδικας: Επιλογή όλων
mkdir /var/www/snowguide.gr/distrato/webcam/gallery/2013/7


και τον επόμενο χρόνο θα πρέπει να
Κώδικας: Επιλογή όλων
mkdir /var/www/snowguide.gr/distrato/webcam/gallery/2014


εκτός αν τους δημιουργήσω όλους με το χέρι και βάλω στο σκριπτάκι if then και να γράφει μόνο του τις εικόνες μέσα στους φακελους
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: βοήθεια για sh που δημιουργεί dirs και mv FILE όταν πρέπ

Δημοσίευσηαπό fkol k4 » 27 Ιουν 2013, 16:49

Αν κάνεις έναν φάκελο με την
Κώδικας: Επιλογή όλων
mkdir $(date +%G)
τότε θα φτιαχτεί ένας φάκελος με όνομα 2013.
Αντίστοιχα, έχεις mkdir $(date +%m) και mkdir $(date +%d), οπότε μπορείς να τα ρυθμίσεις με κάποιο cron job.
Αν και θα προτιμούσα έναν φάκελο για κάθε μέρα (μόνο ένα cron job) με μια εντολή
Κώδικας: Επιλογή όλων
mkdir $(date -I)
Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

Re: βοήθεια για sh που δημιουργεί dirs και mv FILE όταν πρέπ

Δημοσίευσηαπό Ilias95 » 27 Ιουν 2013, 16:57

Κάτι σαν;
Κώδικας: Επιλογή όλων
year=$(date +"%y")
month=$(date +"%m")
day=$(date +"%d")
mkdir -p /var/www/snowguide.gr/distrato/webcam/gallery/"$year"/"$month"/"$day"


Ή πιο σύντομα:
Κώδικας: Επιλογή όλων
mkdir -p /var/www/snowguide.gr/distrato/webcam/gallery/"$(date +"%y")"/"$(date +"%m")"/"$(date +"%d")"


ΥΓ. Με πρόλαβε ο fkolk4.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: βοήθεια για sh που δημιουργεί dirs και mv FILE όταν πρέπ  Το θέμα επιλύθηκε

Δημοσίευσηαπό lepidas » 27 Ιουν 2013, 19:12

δεν κοιτούσα το forum τόση ώρα πάλευα το sh και έκανα αυτό, μολις τελειωσα και το τσέκαρα

nano distrato-gallery
Κώδικας: Επιλογή όλων
#! /bin/bash
cd /var/www/snowguide.gr/distrato/webcam
for each in distrato.jpg;
do
  NEWNAME=$(date -r $each +"%d-%m-%Y_%H:%M").jpg
  DAY=$(date +"%d")
  MONTH=$(date +"%m")
  YEAR=$(date +"%Y")

mkdir -p /var/www/snowguide.gr/distrato/webcam/gallery/"$YEAR"/"$MONTH"/"$DAY"
cp "$each" /var/www/snowguide.gr/distrato/webcam/gallery/"$YEAR"/"$MONTH"/"$DAY"/"$NEWNAME"
done


και απο οτι φαίνεται είναι σαν τα προηγούμενα :clap:
αρχικά δε πιστεύα οτι με μερικές σειρές ακόμα θα γινόταν

σας ευχαριστώ πάρα πολύ για το χρόνο όλων :clap: :clap:

*Τώρα μένει να σχεδιαστεί μια σελίδα για κάθε camera(3 ειναι) αλλα αν ειναι θα ζητησω βοήθεια σε νέο νήμα
και παλι ευχαριστω
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: βοήθεια για sh που δημιουργεί dirs και mv FILE όταν πρέπ

Δημοσίευσηαπό lepidas » 28 Ιουν 2013, 10:47

ένα τελευταίο παρακαλώ,
πολλές φορές οι υπολογιστές σταματάνε την εγγραφή εικόνων στο σερβερ πχ γιατι κοπηκε το ρεύμα, αρα με το παραπανω script εξακολουθουν να δημιουργούνται αρχεία ανα 10 λεπτά με την παλιά εικόνα που έστειλε τελευταία η κάμερα,
τι και πως θα συμπληρώσουμε στο παραπάνω σκριπτ ωστε να ελέγχει αν η εικόνα distrato.jpg είναι ίδια με το "$NEWNAME"-10 λεπτά τότε να μην προχωράει στη δημιουργία του νέου αρχείου?


βρήκα ένα σκριπτ στο νετ που κάνει σύγκριση (cmp) δυο αρχείων στα bytes τους και λειτουργεί οκ αλλα δεν ξέρω πως να ελέγξω την εικόνα "$NEWNAME"

Κώδικας: Επιλογή όλων
#!/bin/bash

cmp -s filenamea.jpg filenameb.jpg > /dev/null
if [ $? -eq 1 ]; then
    echo is different
else
    echo is not different
fi


το script που έχω εισάγει είναι

Κώδικας: Επιλογή όλων
#! /bin/bash
cd /var/www/snowguide.gr/distrato/webcam
for each in distrato.jpg;
do
  NEWNAME=$(date -r $each +"%d-%m-%Y_%H:%M").jpg
  DAY=$(date +"%d")
  MONTH=$(date +"%m")
  YEAR=$(date +"%Y")

mkdir -p /var/www/snowguide.gr/distrato/webcam/gallery/"$YEAR"/"$MONTH"/"$DAY"
cp "$each" /var/www/snowguide.gr/distrato/webcam/gallery/"$YEAR"/"$MONTH"/"$DAY"/"$NEWNAME"
done
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση

Re: βοήθεια για sh που δημιουργεί dirs και mv FILE όταν πρέπ

Δημοσίευσηαπό lepidas » 29 Ιουν 2013, 09:44

Νομίζω τα έχω καταφέρει να σταματάει να παράγει εικόνες εάν η εικόνα δεν έχει ανανεωθεί

crontab
Κώδικας: Επιλογή όλων
01,11,21,31,41,51 07-21 * * * /home/blades/com-distrato


/home/blades/com-distrato
Κώδικας: Επιλογή όλων
#!/bin/bash

     cmp -s /var/www/snowguide.gr/distrato/webcam/distrato.jpg /var/www/snowguide.gr/distrato/webcam/tmp-chck/distrato.jpg > /dev/null
if [ $? -eq 1 ]; then
    cp /var/www/snowguide.gr/distrato/webcam/distrato.jpg /var/www/snowguide.gr/distrato/webcam/tmpok/
    /home/blades/distrato-gallery
else
    sendEmail mpla mpla mpla kodikoi kodikoi klp klp

fi


/home/blades/distrato-gallery
Κώδικας: Επιλογή όλων
#! /bin/bash
rm /var/www/snowguide.gr/distrato/webcam/tmp-chck/distrato.jpg
cp /var/www/snowguide.gr/distrato/webcam/tmpok/distrato.jpg /var/www/snowguide.gr/distrato/webcam/tmp-chck/
cd /var/www/snowguide.gr/distrato/webcam/
for each in distrato.jpg;
do
  NEWNAME=$(date -r $each +"%d-%m-%Y_%H:%M").jpg
  DAY=$(date +"%d")
  MONTH=$(date +"%m")
  YEAR=$(date +"%Y")

  mkdir -p /var/www/snowguide.gr/distrato/webcam/gallery/"$YEAR"/"$MONTH"/"$DAY"
  cp "$each" /var/www/snowguide.gr/distrato/webcam/gallery/"$YEAR"/"$MONTH"/"$DAY"/"$NEWNAME"
done

rm /var/www/snowguide.gr/distrato/webcam/tmpok/distrato.jpg


ίσως να μην είναι ο πιο απλός τρόπος αλλά αυτό μπόρεσα να κάνω, αν κάποιος σκεφτεί κάτι πιο απλό μπορώ να το αλλάξω πάντως
Άβαταρ μέλους
lepidas
superbTUX
superbTUX
 
Δημοσιεύσεις: 3326
Εγγραφή: 11 Μάιος 2011, 11:10
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι