練功房推薦書單

  • 猛虎出柙雙劍合璧版--最新 OCA / OCP Java SE 7 Programmer 專業認證 (電子書)
  • 流浪教師存零股存到3000萬(全新增修版)(書+DVD)
  • 開始在關西自助旅行(京都‧大阪‧神戶‧奈良)(全新增訂版)
  • 不敗教主的300張股票存股術

在Shell Script中寄送檔案當作郵件附件 RSS feed
討論區首頁 » Linux
發表人 內容
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
最近公司要辦研討會,需要寫一個報名網頁,收集參加研討會人員的資料,然後每天下午五點時將報名資料寄送給相關人員,由他們再處理後續的準備事項,所以需要處理下列需求:
1.將資料庫中的報名資料匯出成為一個檔案,例如csv,
2.然後再利用郵件附件方式寄送出去。
3.定時自動執行

第一項任務,因我們使用PostgreSQL 8.3,所以可以使用COPY指令來完成,例如報名資料表名字叫作attendee,為避免寫入權限的問題,我們將其寫入到/tmp/attendee.csv下,同時將其表頭一併輸出(注意:這項功能需要PostgreSQL 8.1版本以上才支援)
copy attendee to '/tmp/attendee.csv' csv header

因為要使用COPY指令需要到postgres這個使用者的權限,故我們可以將上述指令存檔為export.sql存放到/var/lib/pgsql目錄下
然後再利用su方式來完成:
su - postgres -c "psql seminar postgres -f /var/lib/pgsql/export.sql"

第二項任務可利用mutt這個程式來執行
$ mutt -s "報名資料表" -a /tmp/attendee.csv pm@mycompany.com -c boss@mycompany.com,partner@other.com < /dev/null

如果沒有mutt可以透過yum -y install mutt來安裝

完整的shell script如下:

#!/bin/bash
su - postgres -c "psql seminar postgres -f /var/lib/pgsql/export.sql"
mutt -s "報名資料表" -a /tmp/attendee.csv pm@mycompany.com -c boss@mycompany.com,partner@other.com < /dev/null


第三項任務就是排定cron job即可,在/etc/crontab中設定如下
01 17 * * * root /root/dump.sh

參考資料:
Sending files as mail attachments

分享經驗 累積智慧
[WWW]
andowson

七段學員
[Avatar]

註冊時間: 2007/1/2
文章: 711
來自: 台北
離線
今天發現有些主機(REHL 3.3: mutt-1.4.1-3.4, RH Linux 7.3: mutt-1.2.5.1-1)使用mutt寄出來的信件寄件人會變成root<>,而被當成廣告信,接著遭到郵件伺服器的封鎖,因此有收不到信的狀況。
解決方法就是指定寄件人From:

mutt -e 'my_hdr from:客服中心<service@andowson.com>' -s "測試資料" -a /tmp/test.txt somebody@andowson.com < /dev/null


這樣子就可以正常收到信了

參考資料:
http://pegasus923.pixnet.net/blog/post/33608243-%E5%9C%A8linux%E4%B8%8A%E5%88%A9%E7%94%A8mutt%E6%8C%87%E4%BB%A4%E5%AF%84%E9%99%84%E5%8A%A0%E6%AA%94mail

分享經驗 累積智慧
[WWW]
 
討論區首頁 » Linux
前往:   
行動版