Getmail Script, Diskstation bleibt hängen

Status
Für weitere Antworten geschlossen.

vore

Benutzer
Mitglied seit
20. Mrz 2011
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Hallo!
Ich habe auf meiner Diskstation 211 (DSM 5.1) die Start-Scripte für IPKG auf den neusten Stand gebracht http://www.synology-wiki.de/index.php/IPKG
Seitdem läuft das Script zum Abbholen der E-Mails http://www.synology-wiki.de/index.php/Getmail_script nicht mehr sauber durch bzw.
die Diskstation meldet beim Anmeldeversuch nur "Diskstation wird vorbereitet, später anmelden". Gehe ich per SSH auf die Konsole und kille das Script, piepst die Diskstation ein paar Sek später
und ich kann micht einloggen. Natürlich werden dann meine E-Mails nicht mehr abgerufen. Wenn ich meine Getmail-Scripte im Ordner /volume1/homes/user direkt in der Konsole aufrufe, werden die Mails abgerufen, das läuft also soweit. Ich nutze ein Startscript (S11...) unter /opt/etc/init.d um das eigentliche Mailscript zu starten.
Hier das Startscript (wobei collect_mails.sh das Script zum Abrufen der Mails ist)
Rich (BBCode):
#! /bin/sh
test -f /opt/bin/collect_mails.sh || exit 0
   cp /bin/busybox /tmp
   ln -s /tmp/busybox /tmp/sh
   sh /opt/bin/collect_mails.sh
exit

Vor dem Update auf die neuen Start-Scripte lief das Getmail-Script ohne Probleme seit über 2 Jahren ohne Probleme.
Jemand eine Idee was da mit den Script faul sein könnte?

Gruß

Volker
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
kannst du diesen Schnippel denn manuell ausführen ohne Fehler? Zeig zudem mal noch collect_mails.sh
Denn Sinn des Links verstehe ich nicht ganz :)
 

vore

Benutzer
Mitglied seit
20. Mrz 2011
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Hallo!
Danke für die Rückmeldung.
Ich habe drei Scripte. Wenn ich das erste Script (S11StartMailCollect) von der Konsole aufrufe, läuft es und Mails werden auch abgeholt.
Schließe ich die Konsole bzw. breche die Ausführung mit STRG-C ab, werden keine Mails mehr abgeholt. Das Script ist auch nicht mehr in der Prozess-Liste (ps).
Startet das Script mit dem Hochfahren der DS kommt es zu dem schon beschriebenen Problem.

/opt/etc/init.d/S11StartMailCollect.sh

Rich (BBCode):
#! /bin/sh
test -f /opt/bin/collect_mails.sh || exit 0
   cp /bin/busybox /tmp
   ln -s /tmp/busybox /tmp/sh
   sh /opt/bin/collect_mails.sh
exit

/opt/bin/collect_mails.sh

(hier auch der Hinweis
## WICTHIG: Der Link zwischen /tmp/busybox und /tmp/sh MUSS manuell vor dem Aufruf der Scriptes erstellt werden!!
, daher der Link im vorherigen Script. Ist das falsch?)

Rich (BBCode):
#!/tmp/sh
## NAME des getmail Scripts hier anpassen (ohne Pfadangabe!!!)
pfad_getmail=getmail.sh
# Pfad fuer Logfile hier angeben. ALLE Ausgaben des Skriptes werden hierhin umgeleitet
getmail_log=/opt/var/log/user.getmail.log


if test -e /tmp/checkmaill ; then
 echo "Code rennt bereits"
 exit
elif test "$(whoami)" != "root" ; then
 echo "Das Script MUSS unter root laufen. Mittels su <user> holt das Script die Emails dann als <user> ab"
 exit
elif test ! -e $getmail_log ; then
 echo "Das Logfile unter $getmail_log konnte nicht gefunden werden"
 exit
fi

## WICTHIG: Der Link zwischen /tmp/busybox und /tmp/sh MUSS manuell vor dem Aufruf der Scriptes erstellt werden!!
cp -f /bin/busybox /tmp/ >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/sleep >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/expr >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/test >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/pidof >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/cut >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/ls >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/grep >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/su >> $getmail_log 2>&1
ln -s /tmp/busybox /tmp/find >> $getmail_log 2>&1

i=0
touch /tmp/checkmaill  
echo $$ > /tmp/checkmaill  
PATH=/tmp
while true; do
 s=`pidof imap`                 
 t=''		                
 if test "$s" != '' ; then      
  for var in $s ; do		
   tt=`ls -all /proc | grep $var | cut -d' ' -f6`  
   if test "$tt" != "$t" ; then   
     for ii in `find /volume1/homes/$tt -name $pfad_getmail`; do 
          su $tt -c "$ii" >> $getmail_log 2>&1   
          $ii >> $getmail_log 2>&1
      done
     t=$tt
   fi
  done  
  i=`expr $i + 1`  
  sleep 60	  
 else
  tt=''			
  i=`expr $i + 1`	
  sleep 1		
  if test `expr $i % 3600` -eq 0 ; then   
   i=0					  
   for ii in `find /volume1/homes/ -name $pfad_getmail`; do
    tt=`ls -all $ii | cut -d' ' -f6`
        # siehe oben (Zeile 44-46)
    su $tt -c "$ii" >> $getmail_log 2>&1 
    $ii >> $getmail_log 2>&1
   done
  fi
 fi
done

/volume1/homes/USER/getmail.sh

Rich (BBCode):
#!/bin/sh
/opt/bin/getmail --quiet --delete --rcfile /volume1/homes/USER/.getmail/provider.rc --getmaildir volume1/homes/USER/.getmail
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Okay ich vermute ich weiss was los ist :) Dieses Script kannst du so ohe weiteres beim Systemstart automatisch laden. Denn das Script läuft einer Endlosschleife. Desswegen bleibt der Bootvorgang hängen und wartet auf die Beendigung des Scriptes, was ja nie passiert.
Code:
sh /opt/bin/collect_mails.sh &
probier mal ob Obiges hilft. Damit sollte das Startscript sofort zurückgeben und der Bootvorgang sollte weiterlaufen
 

vore

Benutzer
Mitglied seit
20. Mrz 2011
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Das hatte ich auch schon vermutet, als ich das Script an der Konsole gestartet habe es es nicht mehr beendet hat. Kenne mich nur mit
Bash nicht genug aus. Werde das so die Tage mal probieren und Rückmeldung geben (habe nur im Moment das alte Startscript wieder drin).
Kurze Frage noch: das Script (Mails abrufen mit Getmail, Platten im Sleep-Mode) ist von Dir?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat