So. Hier bin ich wieder
Vorneweg: Wenn auch spät, aber trotzdem erst mal danke Jensebub. Ich habe wirklich keine Ahnung von PHP oder Linux. Das was ich kann hab ich mir abgeschaut und oder testen testen testen und learning by doing.
Ich bin jetzt soweit:
1. Ich habe mir ein kleines bash script geschrieben (wirklich klein), welches ein python script ausführt, was mir die E-Mails abholt. Dann den Inhalt in eine Datei schreibt und dann aus der Datei die passende Zeile raussucht die ich brauche.
Das sieht jetzt so aus:
Code: Alles auswählen
#!/bin/bash
#emails abholen und inhalt in email.txt schreiben
python /root/email.py>/tmp/email.txt
#Telefonnummern hinzufügen in sms.txt
echo To: 0000000, 111111111, 22222222222, 333333333, 444444444 >/tmp/sms.txt
#email.txt durchsuchen nach Stichwort (letzte zuerst)
grep "Nachricht:" /tmp/email.txt | tail -1 >>/tmp/sms.txt
#In Postausgang schieben
mv /tmp/sms.txt /var/spool/sms/outgoing/sms1.txt
#Dateien löschen:
rm /tmp/email.txt
#rm /tmp/sms.txt
exit 0
Pythonscript email.py
Code: Alles auswählen
import poplib
#config
user = 'postfachuser'
pop_server = 'mailserver.de'
password = 'passwort'
#script
Mailbox = poplib.POP3_SSL(pop_server, '995')
Mailbox.user(user)
Mailbox.pass_(password)
numMessages = len(Mailbox.list()[1])
for i in range(numMessages):
for msg in Mailbox.retr(i + 1)[1]:
print msg
Mailbox.quit()
das sh script würde ich jetzt in crontab eintragen und alle 5-10 min durchführen.
Insofern funktioniert das auch schon, jedoch hab ich folgende Probleme und auch wenn Ihr euch mit python und/oder den smstools nicht auskennt. Im bashscripting aber ganz sicher.
1. Wenn jemand zwei Sms hintereinander verschickt in der crontab Zeitspanne, werden die Datein überschrieben. Welche Parameter muss ich setzen damit er mir dann eine email2.txt und sms2.txt erstellt?
Oder ist das nicht lösbar?
Edit: Ich könnte das auch direkt über die komandozeile ausführen mit
sendsms 491721234567 'Hello, how are you'. Jedoch funktioniert das ganze nur mit einer Nummer. Ich brauche aber mehrere Nummern. Somit würde es sich doch empfehlen, sendsms hintereinander aufzurufen.
Code: Alles auswählen
sendsms nummer1 'gleicher Nachrichtentext'
sendsms nummer2 'gleicher Nachrichtentext'
sendsms nummer3 'gleicher Nachrichtentext'
sendsms nummer4 'gleicher Nachrichtentext'
sendsms nummer5 'gleicher Nachrichtentext'
Sprich als script würde das jetzt so aussehen:
Code: Alles auswählen
#!/bin/bash
Nummer1="00000000000"
Nummer2="11111111111"
Nummer3="22222222222"
#emails abholen
python /root/email.py >/tmp/email.txt
#Dateien durchsuchen
#echo To: 0000000, 111111111, 22222222222, 333333333, 444444444 >/tmp/sms.txt
grep "Nachricht:" /tmp/email.txt | tail -1 >>/tmp/sms.txt
#SMS senden:
sendsms $Nummer1 'Nachrichtenausschnitt aus der E-Mail'
sendsms $Nummer2 'Nachrichtenausschnitt aus der E-Mail'
sendsms $Nummer3 'Nachrichtenausschnitt aus der E-Mail'
#In Postausgang schieben
#mv /tmp/sms.txt /var/spool/sms/outgoing/sms1.txt
#Dateien loeschen:
rm /tmp/email.txt
#rm /tmp/sms.txt
exit 0
Das wäre denk ich mal die klügere Lösung als den SMSDaemon laufen zu lassen...
Woran es da allerdings happert ist wie bekomme ich den Nachrichtentext der ja Variabel ist in die Zeile 'Nachrichtenausschnitt aus der E-Mail'
Vielleicht hat jemand die Muße und kann mir ein kleines bisschen unter die Arme greifen
Edit2:
Nach etwas googlen hab ich das hier gefunden, was eventuell hilft für MEHRFACHE EMPFÄNGER, nur ist mir das um einziges zu hoch...
Code: Alles auswählen
#!/bin/bash
# Sample script to allow multiple recipients in one message file.
# Define this script as a checkhandler.
outgoing="/var/spool/sms/outgoing"
recipients=`formail -zx "To:" < "$1"`
#count=`echo "$recipients" | wc -l`
count=`echo "$recipients" | wc -w`
if [ $count -gt 1 ]; then
# Will need echo which accepts -n argument:
ECHO=echo
case `uname` in
SunOS)
ECHO=/usr/ucb/echo
;;
esac
messagebody=`sed -e '1,/^$/ d' < "$1"`
headers=`formail -X "" -I "To:" -f < "$1"`
for recipient in $recipients
do
file=`mktemp $outgoing/send_XXXXXX`
$ECHO "To: $recipient" > $file
if [ "x$headers" != "x" ]; then
$ECHO "$headers" >> $file
fi
$ECHO "" >> $file
$ECHO -n "$messagebody" >> $file
done
# Remove processed file:
rm $1
# Tell to smsd that checkhandler has spooled this message:
exit 2
fi
exit 0
Gruß bimmi