سؤال

لدي برنامج نصي باش الذي يقوم بتشغيل استعلام في بوستغريس ، فإنه يخرج إلى كسف.أريد أن أضيف إلى هذا البرنامج النصي لاستخدام ميلكس إلى البريد الإلكتروني ذلك .ملف كسف إلى بريد إلكتروني معين.

المشكلة أواجه هو أنه لن البريد الإلكتروني الملف.يمكنني الحصول على البريد الإلكتروني حتى أعرف ميلكس هو الإعداد بشكل صحيح.أنا فقط لا يمكن الحصول عليه إلى البريد الإلكتروني كمرفق.يمكنه أيضا إرسال الإخراج بالبريد الإلكتروني في نص البريد الإلكتروني.

حتى هنا هو رمز.

    #!/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

لقد حاولت الجزء ميلكس مع:

    uuencode /tmp/folder/file-$NOWDATE.csv /tmp/folder/file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com

و

    uuencode /tmp/folder/file-$NOWDATE.csv file-$NOWDATE.csv | mailx -s "Accounts No Credit Card Report for '$NOWDATE'" mail@gmail.com

وبالتالي فإن المشكلة أحصل هو يبصق هذا الخطأ عند تشغيل ملف ش.

    uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error
هل كانت مفيدة؟

المحلول

NOWDATE=`date +%m-%d-%Y`

والامر متروك لكم ، ولكن النظر في استخدام تنسيق إسو-8601 ، يي-مم-د (%Y-%m-%d).من بين المزايا الأخرى ، يتم فرزها بشكل جيد.

# remove the first 2 lines of the report as they are headers
sed -i '2d' /tmp/folder/file-$NOWDATE.csv

هذا لا يزيل أول سطرين ، إنه يزيل السطر الثاني فقط.التغيير '2d' إلى '1,2d' (ولكن انظر أدناه).

لاحظ أن هذا يعدل الملف في مكانه.

uuencode /tmp/folder/file-$NOWDATE.csv | mailx [...]

إذا uuencode يتم إعطاء اسم ملف واحد فقط ، يقرأ من الإدخال القياسي ويضع الاسم في مخرجاته.النص التالي،" لقد حاولت جزء ميلكس مع:"...، يشير إلى أنك ربما تكون على دراية بهذا-لكنك لم تعرض لنا الكود الذي يعمل على إصلاح هذه المشكلة بخلاف المقتطفات.

رسالة الخطأ التي تتلقاها:

uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error

أليس كذلك ما ستحصل عليه عادة إذا لم يكن الملف موجودا.لا أعرف ما الذي قد يتسبب في "خطأ غير معروف في النظام" من هذا القبيل.

ولكن هنا بديل أن (أ) هو إمهو أنظف قليلا ، و (ب) لا يتطلب uuencode لمحاولة قراءة الملف:

#!/bin/bash

NOWDATE=`date +%m-%d-%Y` # but %Y-%d-%m is better
DIR=/tmp/folder
FILE=file-$NOWDATE.csv
RECIPIENT=user@example.com

PGPASSWORD=password psql -w -h host -p 5432 -d database -U user -o $DIR/$FILE <<EOF
... Query is here
EOF

tail -n +3 $DIR/$FILE | uuencode $FILE | \
    mailx -s "Accounts No Credit Card Report for '$NOWDATE'" $RECIPIENT

نصائح أخرى

إذا كانت المشكلة تتعلق بـ uuencode ... فلماذا لا يمكنك تجربة خيار mailx -a الذي يمكنه أيضًا إرفاق الملفات بالبريد. تحقق من هذا الرابط لمزيد من المعلومات.

كان لدي نفس المشكلة.برنامج نصي باش تنفيذ الاستعلام ، وتوفير ملف كسف وإرسالها بالبريد.في حالتي أنه أعطى uuencode: fopen-ing /tmp/folder/file-01-11-2011.csv: Unknown system error

عندما نفذت البرنامج النصي باستخدام قذيفة شلن ، عملت بشكل جيد تماما دون أي مشاكل.مثل هذا - ksh script.sh هذا مجرد مؤشر آخر.في حالة وين كود يعطي خطأ ، ثم حاول تنفيذه باستخدام كش;قد عمل لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top