Sponsored Content
Top Forums Shell Programming and Scripting Triggering a script using POSTFIX.... Post 302995343 by drysdalk on Tuesday 4th of April 2017 06:46:25 PM
Old 04-04-2017
Hi,

In terms of the implementation, your script would want to parse line-by-line whatever is piped in to it, and then act based on what it got. The format I've used in general for scripts that run in this way (input is directly piped into them) is:

Code:
#!/bin/bash
/bin/cat - | while read -r line
do
        #Code goes here
done

The point of /bin/cat - at the start is just to print out again whatever is passed into cat as standard input (represented by the - symbol), which will be whatever Postfix is piping into the script. So you can then do whatever you wan to do with each line to determine what it is, what to do with it, and so on.

So in your case, if you had lines that would define and set variables, you could look for them on a line-by-line basis. A quick example of one way of doing this would be the following.

Let's say our e-mail body will contain the following variables: UID, USERNAME and HOMEDIR. We want our script to find these matching lines, and assign the variables it reads in. Finally we'll terminate our message body with a single line reading END, and get the script to write out the variables it's read at that point.

Here's our code:

Code:
#!/bin/bash
/bin/cat - | while read -r line
do
        case "$line" in
                UID=*)
                        uid=`echo "$line" | /usr/bin/awk -F= '{print $2}'`
                        ;;
                USERNAME=*)
                        user=`echo "$line" | /usr/bin/awk -F= '{print $2}'`
                        ;;
                HOMEDIR=*)
                        home=`echo "$line" | /usr/bin/awk -F= '{print $2}'`
                        ;;
                END)
                        echo "The UID is $uid, the username is $user, and the homedir is $home"
                        exit 0
                        ;;
        esac
done

Here's our example input:

Code:
UID=1002
USERNAME=unixforum
HOMEDIR=/home/unixforum
END

And here's what happens when we run the script by piping the contents of our example input into it:

Code:
$ cat example.txt | ./script.sh
The UID is 1002, the username is unixforum, and the homedir is /home/unixforum
$

Hope this gives you an idea of how the implementation would work, and how your approach of reading in and assigning variables to work with might look.
This User Gave Thanks to drysdalk For This Post:
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Triggering a Script Recursively With Different Parameter and in Different Process

Hi Every One I have a Compilation Script name scomp which takes the Program name as the command line argument I have around 10000 Programs to compile while each program takes around 10 mins to compile i have written a Mass Compile script Scripts which takes the list of programs as input... (15 Replies)
Discussion started by: pbsrinivas
15 Replies

2. Shell Programming and Scripting

PHP Script that sends mail - Postfix breaks it

I have a PHP Script that works perfectly on a server that uses Sendmail. However I tried to port it to a new server that has the Postfix to Sendmail compatibility interface, and it doesn't work properly. The php.ini file has the path for sendmail on both servers set to: /usr/sbin/sendmail -t... (0 Replies)
Discussion started by: boopfm523
0 Replies

3. Shell Programming and Scripting

Triggering my Unix script....

Hi All, i dont have any idea about perl scripting... i need some suggestion so that i can put my effort to find out the solution:D let me explain....one of my tedious task which will taken care by Unix shell script which i prepared. its a kind of routine work that i am running the... (4 Replies)
Discussion started by: Shahul
4 Replies

4. IP Networking

postfix - reinject mail to postfix from hold queue directory

hi all. Am using smtpd_recipient_restrictions & check_recipient_access in postfix. The hash file looks like this: emailaddress1 HOLD emailaddress2 HOLD The aim is to place email from these recipients in the hold directory,check them then reinject them back in postfix on some... (0 Replies)
Discussion started by: coolatt
0 Replies

5. UNIX for Dummies Questions & Answers

Script triggering Korn shell, how-to stop it?

Script_A.sh has echo "In am in script A" ksh ## K-shell is invoked. Script B.sh ## which I am writing... ./script_A.sh echo "I am in script B" return 0 When I run: $> Script_B.sh $> I am in script A $> Basically, on calling Script_A.sh from within Script_B.sh I have the issue of... (2 Replies)
Discussion started by: baivab
2 Replies

6. UNIX for Dummies Questions & Answers

Please help with Postfix config issue - How to allow remote Exchange server to relay to my postfix

Hi guys One of our clients have a problem with sending email to a certain domain. No matter what we try, the mails just dont get delivered. What I did then, is created a new connector on their Exchange server, pointing all mail sent to their client at "domain1" to relay to our Postfix mail... (0 Replies)
Discussion started by: wbdevilliers
0 Replies

7. Shell Programming and Scripting

Triggering remote UNIX shell script from Remote desktop

I m trying to run a batch script in remote desktop which executes unix commands on the unix server...the problem is i wnt the output in HTML format.so in my batch script i m giving the cmd like ssh hostname path ksh HC_Report.ksh>out.html ...but it generates the HTML file in remote desktop .i... (2 Replies)
Discussion started by: navsan
2 Replies

8. UNIX and Linux Applications

Postfix: Active Directory and postfix alias

I have a mailserver with postfix i want to alias all mail for administrator@domain.fqdn to root@domain.fqdn I have the aliases configured,and i did newliases but doesn't work. How to did this?Postfix is configured for virtual domain on ad server. (2 Replies)
Discussion started by: Linusolaradm1
2 Replies

9. Shell Programming and Scripting

Triggering UNIX Script from a JAVA program

Hi I am trying to implement one program, where JAVA needs to trigger the backend UNIX script. Tried with options like String cmdArray = {"/bin/ksh","-c","/SCRIPT_ABSOLUTE_PATH/sampleScript.ksh /FILE_ABSOLUTE_PATH Test_File.dat TEST E SFTP"} When I trigger the script from front end with... (1 Reply)
Discussion started by: karumudi7
1 Replies
All times are GMT -4. The time now is 04:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy