Bash-Skript mit mailx-mail-Anhang
Habe ich ein bash-Skript, das ausgeführt wird, eine Abfrage in postgres, gibt es in csv. Ich möchte hinzufügen, um das Skript zu verwenden, mailx, um E-Mail .csv-Datei an eine bestimmte E-Mail.
Das problem, das ich habe ist, es wird keine E-Mail die Datei. Ich kann die E-Mail, damit ich weiß, mailx-setup korrekt. Ich kann einfach nicht bekommen es, um E-Mail als Anhang. Es kann auch die E-Mail-Ausgang in den Körper der E-Mail.
So, hier ist der code.
#!/bin/bash
NOWDATE=`date +%m-%d-%Y`
PGPASSWORD=password psql -w -h host -p 5432 -d database -U user -o /tmp/folder/file-$NOWDATE.csv <<EOF
Query is here
# remove the first 2 lines of the report as they are headers
sed -i '2d' /tmp/folder/file-$NOWDATE.csv
uuencode /tmp/folder/file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
Habe ich versucht das mailx-Teil mit:
uuencode /tmp/folder/file-$NOWDATE.csv /tmp/folder/file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
und
uuencode /tmp/folder/file-$NOWDATE.csv file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com
Also das problem, das ich bekomme, ist es spuckt diese Fehlermeldung, wenn ich das ausführen .sh Datei.
uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
- Ist der Pfad
/tmp/folder/file-$NOWDATE.csv
richtig? Tunpwd
wo Sie die Datei und überprüfen. Dieser Fehler tritt auf, wenn/path/to/file
existiert nicht. - Auch
sed -i '2d' filename
löscht die zweite Zeile und nicht ersten beiden. Für das löschen der ersten beiden Zeilen, die Sie tun müssensed -i '1,2d' filename
- Jaypal. Ich Stimme dem Kommentar falsch war, fand ich, dass ich nur benötigt, um zu löschen Sie die zweite Zeile... ich hatte es zunächst das löschen der ersten und zweiten. LOL... Ok ich check it out.
- der Pfad der Datei existiert mit dem pwd es sich in der Tat zeigen den richtigen Weg. bahhhhh... obwohl ich nur einen Allgemeinen Pfad ausblenden, die Pfade, die Sie zeigen tatsächlich den richtigen Weg.. Frage mich, ob es die $NOWDATE, die werfen es Weg, jedoch habe ich es auch nur versuchen mit dem korrekten Dateinamen, ohne die $NOWDATE und bekam trotzdem den Fehler. Könnte ich sein, fehlt etwas, das installiert werden soll?
- Wenn der Befehl funktioniert von der Kommandozeile aus, dann sollte es funktionieren aus dem Skript zu :-). Versuchen Sie, die geschweifte Klammern um die variable.
uuencode /tmp/folder/file-${NOWDATE}.csv /tmp/folder/file-${NOWDATE}.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" [email protected]
- Tut mir Leid, mein Letzte Kommentar, wenn Sie versucht, läuft es mit dem Namen dann Klammern nicht helfen. Führen Sie den Befehl stand-alone-von der Befehl-Linie und lassen Sie mich wissen, was Sie bekommen.
InformationsquelleAutor DoCnTex | 2012-01-11
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist bis zu Ihnen, sondern betrachten Sie unter Verwendung der ISO-8601-format, YYYY-MM-DD (
%Y-%m-%d
). Neben anderen Vorteilen, ist es schön sortiert.Dies nicht, entfernen Sie die ersten zwei Zeilen, es entfernt nur die zweite Zeile. Ändern
'2d'
zu'1,2d'
(aber siehe unten).Beachten Sie, dass dies ändert die Datei.
Wenn
uuencode
ist nur eine Datei name, liest es von der Standardeingabe und legt die Namen in seiner Ausgabe. Ihre folgenden text: "ich habe versucht, das mailx-Teil mit:" ..., zeigt an, dass Sie wahrscheinlich bewusst-aber Sie haben nicht gezeigt, uns den code, der behebt das Problem, in snippets.Die Fehlermeldung, die Sie bekommen:
nicht, was Sie normalerweise erhalten, wenn die Datei nicht vorhanden ist. Ich weiß nicht, was verursachen würde, ein "Unbekannter Systemfehler" so.
Aber hier ist eine alternative, die (a) ein bisschen sauberer IMHO, und (b) nicht erforderlich
uuencode
zu versuchen, die Datei zu Lesen:Wenn das problem mit uuencode...warum kann Sie versuchen mailx -eine option, die können auch fügen Sie die Dateien an die E-mail.
Überprüfen Sie diese link für mehr info.
Ich hatte das gleiche Problem. Ein bash-Skript, der die Abfrage ausführt, speichern Sie die csv-Datei und mailing es. In meinem Fall gab es die
uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
Wenn ich ausgeführt das Skript mit der ksh-shell, es funktionierte einwandfrei, ohne Probleme. Wie das -
ksh script.sh
Dies ist nur ein weiterer Zeiger. Im Falle uuencode Fehler gibt, dann führe es mit ksh; es könnte für Sie arbeiten.