d1ck3n
Goto Top

Mail aus Skript übernimmt keinen inhalt aus Datei

Hallo zusammen,

Ausgangspunkt:
ich überarbeite momentan ein Shell-Skript welches per rsynch Verzeichnisse von einem Mount Point in einen Anderen kopieren, eine Mail mit dem Inhalt einer info.txt (wird in den Verzeichnissen generiert) raus schicken und danach die Quell-Verzeichnisse löschen soll.


Mein Problem:
Das Skript macht soweit was es soll, aber leider kommt die Mail ohne Inhalt an. Als einzigen Output bekomme ich:

# ./ftp-synch
recode: fopen (/mnt/destination/portal/files/__info.txt): No such file or directory
cat: /mnt/destination/portal/files/__info.txt: No such file or directory
Null message body; hope that's ok  


ftp-synch
#!/bin/bash
ftpdir="/mnt/source/ftp/portal-ftp/public/files/uploaded"  
startdir="$ftpdir"  
rsyndir=""  
filetest="__info.txt"  

function rmdir() {
rm -r "$1"  
}

function rsyncdir() {
/data/01_script/Help-Sync "$1"  
echo "dollar1dir is = $1" >>/var/log/portal/rsync.log  
}

function scandir() {
local dirname
local dirvalue
local file
for dirname in "$1"/*; do  
        if [ -f "$dirname" ]  
         then
         echo "A file was found..." >>/var/log/portal/rsync.log  
         file=$(echo "$dirname" | cut -d"/" -f10)  
        echo "File have the value $file" >>/var/log/portal/rsync.log  
         if [ "$file" = "$filetest" ]  
          then
          echo "The file is a "$filetest" save folder">>/var/log/portal/rsync.log  
          rsyndir=$(dirname "$dirname")  
          rsyncdir "$rsyndir"  
          echo "rsyncdir 1 is = $rsyncdir" >>/var/log/portal/rsync.log  
         fi
        elif [ -d "$dirname" ]  
           then
           echo "Found Folder "$dirname" , check if the directory is empty.">>/var/log/portal/rsync.log  
            dirvalue=$(ls -al "$dirname" | wc -l)  

             if [ "$dirvalue" -le 3  ]  
              then
              echo "Folder "$dirname" is empty and will be deleted">>/var/log/portal/rsync.log  
              dir2rm="$dirname"  
              rmdir "$dir2rm"  
                echo "rmdir = $dir2rm"  
             else
              scandir "$dirname"  
                echo "rsyncdir EOL is = $rsyncdir" >>/var/log/portal/rsync.log  
             # rsyncdir "$rsyncdir" 
             fi
        fi


done
}
if [ -d "$ftpdir" ]  
then
scandir "$ftpdir"  
else
echo Error "$ftpdir" is not a directory  
fi
end

Help-Sync
#!/bin/bash
echo Start rsync /mnt/source $(date) >>/var/log/portal/rsync.log
rsync -avz --remove-source-files "$1" /mnt/destination/portal/ >>/var/log/portal/rsync.log 2>>/var/log/portal/rsync.err  
echo End rsync /mnt/source $(date) >>/var/log/portal/rsync.log

dir=$(echo "$1" | cut -d"/" -f7 )  
recode ibmpc..u8 /mnt/destination/portal/"$dir"/__info.txt  
cat /mnt/destination/portal/"$dir"/__info.txt | mail -s "Neue Datei auf Portal" name@mail.com  

Das ist bestimmt was recht triviales, aber irgendwie komme ich nicht auf meinen Fehler. Vielleicht kann mir wer von euch helfen.

Grüße

Content-ID: 400147

Url: https://administrator.de/contentid/400147

Printed on: December 12, 2024 at 02:12 o'clock

erikro
erikro Feb 01, 2019 updated at 13:46:47 (UTC)
Goto Top
Moin,

wenn ich das richtig sehen, dann löschst Du hier die Datei:

Zitat von @D1Ck3n:
Help-Sync
#!/bin/bash
[...]
rsync -avz --remove-source-files "$1" /mnt/destination/portal/ >>/var/log/portal/rsync.log 2>>/var/log/portal/rsync.err  

Und deshalb ist sie hier nicht mehr da:

 recode ibmpc..u8 /mnt/destination/portal/"$dir"/__info.txt  
cat /mnt/destination/portal/"$dir"/__info.txt | mail -s "Neue Datei auf Portal" name@mail.com  

hth

Erik
D1Ck3n
D1Ck3n Feb 01, 2019 at 14:21:24 (UTC)
Goto Top
Moin Erik,

die info.txt existiert auf dem Ziellaufwerk noch und könnte verwendet werden.

Es sieht so aus als würde das Skript an der falschen stelle nach der .txt suchen. Es müsste eigentlich hier die Datei finden:

/mnt/destination/portal/kopiertesVerzeichnis/__info.txt

Grüße
erikro
erikro Feb 01, 2019 at 14:23:52 (UTC)
Goto Top
Moin,

was steht denn in $1? Sprich, wie wird das Skript aufgerufen?

Liebe Grüße

Erik
bloodstix
bloodstix Feb 01, 2019 at 14:34:18 (UTC)
Goto Top
Hallo,

prüf nochmal die verschiedenen Variablen und Funktionsnamen.
Du hast dich ein paar mal mit "$rsyndir" und der Funktion "rsyncdir" vertan.
Vielleicht ist es das schon.

Gruß
bloody
D1Ck3n
D1Ck3n Feb 04, 2019 at 11:55:17 (UTC)
Goto Top
Hallo zusammen,

ich habe meinen Fehler gefunden! Hier:

dir=$(echo "$1" | cut -d"/" -f7 )  

muss auf

dir=$(echo "$1" | cut -d"/" -f8 )  

geändert werden, damit der ganze Pfad übernommen wird!

Trotzdem danke für eure Antworten!

Grüße