Sponsored Content
Top Forums Shell Programming and Scripting script to pull info from my email? Post 302305404 by cfajohnson on Wednesday 8th of April 2009 08:35:54 PM
Old 04-08-2009
Quote:
Originally Posted by xinix
Hi, I've had some success at writing this script. I'm sure it's not the most graceful and it still needs some work, but, it's a good start. I've had to search quite a bit for things that I'm sure are fairly simple to do. I could use some help adding a bit of functionality that I need in the script.
So far I have the emails coming into a directory and a separate file is made for each one (getmail does this). This script goes through the directory and gets the info I need from the email and adds this to a calendar file(.ics). Right now I have it confined to a single test file until I can have it do everything it needs to do. Once I have it ready to use on all files that come, I'll add code for it to move the parsed email out and work through all the files in the directory until it's empty. The script checks a few line that are in the emails but aren't in the example I gave before.

Heres the script:
Code:
#!/bin/bash

NEWEST=$(ls -lrt | awk '{ f=$NF }; END{ print f }')


Why are you reversing the output of ls and then getting the last line instead of just getting the first?

Code:
NEWEST=$( ls -t | head -1 )

Or:

Code:
set -f; set -- $( ls -t )
NEWEST=$1

Quote:
Code:
TMPNAME=$(awk '/Confirmation No.         :/ {print $4}' $NEWEST)
PLACE=$(awk '/Place                   :/ {print $3,$4,$5,$6,$7}' $NEWEST)
WHO=$(awk '/Person                  :/ {print $4,$5,$3}' $NEWEST)
TITLE=$(awk '/Title                    :/ {print $3,$4,$5,$6,$7}' $NEWEST)
DATE=$(awk "/^$PLACE/ "' {print $(NF-2)}' $NEWEST)
STIME=$(awk "/^$PLACE/ "' {print $(NF-1)}' $NEWEST)
ETIME=$(awk "/^$PLACE/ "' {print $(NF)}' $NEWEST)


Why seven calls to awk instead of one?

I don't have time to rewrite the awk code at the momment, but use this for a model:

Code:
eval "$( awk '{ printf "var" ++n "=\"%s\"\n", $1 }' "$NEWEST")"

Quote:
Code:
DTSTART=$(date --date "$DATE $STIME +5 hours" +"%Y%m%d%H%M%S")
DTEND=$(date --date "$DATE $ETIME +5 hours" +"%Y%m%d%H%M%S")
DSTAMP=$(date --date '+5 hours' +"%Y%m%d%H%M%S")

echo -e "BEGIN:VEVENT\n\
DTSTART:$DTSTART\n\
DTEND:$DTEND\n\
DSTAMP:$DSTAMP\n\
...
TRIGGER:-P0DT0H30M0S\n\
END:VALARM\n\
END:VEVENT" > $TMPNAME


Why all the unnecessary \ns and backslashes?

Code:
echo "BEGIN:VEVENT
DTSTART:$DTSTART
DTEND:$DTEND
DSTAMP:$DSTAMP
...
TRIGGER:-P0DT0H30M0S
END:VALARM
END:VEVENT" > $TMPNAME

Quote:
Code:
awk '{if (/END:VCALENDAR/) system("cat '$TMPNAME'"); print}' basic.ics > $TMPNAME.ics

mv $TMPNAME.ics basic.ics
rm $TMPNAME

This work well (mostly) and leaves me with a file that I can use with my calendar (I've decided against evolution). I say this works well because normally the email wil have only one line like this:
Code:
Name Of Place                                 01/23/45  8:20AM  3:00PM

But sometimes there will be more than one, e.g.:
Code:
Name Of Place                                 01/23/45  8:20AM  3:00PM
Name Of Place                                 01/24/56  8:20AM  3:00PM

The script gets the job date, start and end time from this line and it works well when there is only one line. Sometimes (not too often) the job will be on multiple consecutive days. So this line will be repeated with a different date.

How can I have the script add an entry for each line (day)?

How do you add an entry to your calendar?
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Email the changed info in the file

Hey Guyz Just need some help regarding this.I need to send an email(sendmail) to group of users, when ever the content in a file e.g abc.txt changes.We need to send the changed content in the email.We are using bash here.Thanks for your help Guyz --CoolKid (1 Reply)
Discussion started by: coolkid
1 Replies

2. UNIX for Dummies Questions & Answers

Pull a file from a remote server through a shell script

Hi, I am writing a shell script to pull a file from a remote server (Let say its a windows based remote server). One of my criteria is to pull a file only if it is not empty. We have done a similar script to push a file from our end to a remote server and before pushing it we check for the... (2 Replies)
Discussion started by: sashankkrk
2 Replies

3. Forum Support Area for Unregistered Users & Account Problems

Please list email ids or contact info of members

Hi , Is it possible to list the user's email id for further communication. Thanks, MoonwalaPL (3 Replies)
Discussion started by: moonwalapl
3 Replies

4. Shell Programming and Scripting

How to pull info under headers in file(awk,grep,while loop)

below is an extract from my file and I am trying to use Awk and grep and a while loop to pull infomation from under neath "HBA WWN=".HBA WWN=" reoccurs all over the file but the 100000c.....number are unique and I want to be able to pull and reference specifi information under this header ever time... (2 Replies)
Discussion started by: kieranfoley
2 Replies

5. Shell Programming and Scripting

Need script to pull multiple field from log file

I am hoping to get some help with a script to pull certain fields from a log file. User update (xx6xxx P) rpt (yy6yyy B) 2010/01/20 21:36:01.298 Remote client forward start streamid 85af 2010/01/20 21:36:01.307 rpt2 (ZZ6ZZZ G) rpt1 (YY6YYY B) urcall (CQCQCQ ) mycall (W1AW) user... (5 Replies)
Discussion started by: TedSD
5 Replies

6. Shell Programming and Scripting

Please do help: Perl Script to pull out rows from a CSV file

I have CSV file that contains data in the format as shown below: ABC, 67, 56, 67, 78, 89, 76, 55 PDR, 85, 83, 83, 72, 82, 89, 83 MPG, 86, 53, 54, 65, 23, 54, 75 .. .. .. .. I want to create a script that will pull out the rows from the above sheet and paste it into another CSV file.... (12 Replies)
Discussion started by: pankajusc
12 Replies

7. Shell Programming and Scripting

Script to pull hashes out of large text file

I am attempting to write a script that will pull out NTLM hashes from a text file that contains about 500,000 lines of data. Not all accounts contain hashes and I only need the ones that do contain hashes. Here is a sample of what the data looks like: There are thousands of other lines in... (6 Replies)
Discussion started by: chango77747
6 Replies

8. Shell Programming and Scripting

Bash Script to pull ipa server name on 500 servers

Hello All, I need help writing a bash script that will run on 500 LINUX servers and do the following: 1. Capture the ipa_server name from /etc/sssd/sssd.conf on a list of 500 servers in the ipahosts file. 2. Write to a file outputing only server name and IPA server name. Root ssh keys... (3 Replies)
Discussion started by: vtowntechy
3 Replies

9. Shell Programming and Scripting

Shell script to pull certain fields

I/m a beginner so be easy. I have text files that live on an AIX server. The files come in and I've been charged with writing a shell script to email out that pulls the first date, and the last date of the file. I need to load these 2 dates into 2 separate variables. I can figure out the variables,... (13 Replies)
Discussion started by: mattadams1983
13 Replies

10. Shell Programming and Scripting

Generic script to recursively cd into directories and git pull

Hi all, I'm trying to write a script to recursively cd into my Git projects and pull them, and will later expand it to build my projects as well. I'm having a bit of trouble with my current script, as I want to supply a command line argument to tell it which branch to check out. I can hard... (2 Replies)
Discussion started by: Cows
2 Replies
All times are GMT -4. The time now is 05:23 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy