Convert scan-2-ftp into scan-2-email

Discussion in 'Programming/Scripts' started by sjau, Dec 29, 2009.

  1. sjau

    sjau Local Meanie Moderator HowtoForge Supporter

    Hi there

    In my place I setup today a network printer in such a way, that I can scan-to-email while the printer itself supports only scan-2-ftp.

    The printer itself provides a custom of scan profile that can easily customized. In that way I could setup for everyone an own profile and hence custom login data to the ftp server.

    The ftp server itself is a small "home-made" business server. It serves the webpage and acts as email server. So on that server I setup proftpd with virtual users on mysql according to the howtos in here.

    With that combination I was able to provide for each scan-to-ftp profile on the printer a custom ftp mail account with a custom dir.

    What I needed then was a script that regurarly checks the ftp folders and sends an email if a new file is there.

    I used this script here that i wrote:
    Code:
    #!/bin/bash
    
    user_arr[1]="user1"
    user_arr[2]="user2"
    user_arr[3]="user3"
    user_arr[4]="user4"
    user_arr[5]="user5"
    
    email_arr[1]="user1@domain.com"
    email_arr[2]="user2@domain.com"
    email_arr[3]="user3@domain.com"
    email_arr[4]="user4@domain.com"
    email_arr[5]="user5@domain.com"
    
    basefolder='/data/ftp'
    emailtext="$basefolder/emailtext"
    
    for I in ${!user_arr[*]}
    do
            user="${user_arr[$I]}"
            email="${email_arr[$I]}"
            cd $basefolder/$user
            pwd
            for F in `ls`
            do
                    VAL=`lsof $basefolder/$user/$F`
                    if [ -z $VAL ]
                    then
                            echo $F
                            echo $email
                            mutt -s "Scanner - Dokumente" -a $F $email < $emailtext
                            rm $F
                    fi
            done
    done
    
    rm $basefolder/sent
    
    And then I run that every minute by cron.

    I have tested this a little today and it works quite well. However I'm not sure if that script above is good. The only way I could think of to check if a new document has been finished transferring from the printer to the server is by the use of the lsof command.

    If you have better suggestions I'd be glad to hear that.
     
  2. falko

    falko Super Moderator Howtoforge Staff Moderator HowtoForge Supporter ISPConfig Developer

  3. sjau

    sjau Local Meanie Moderator HowtoForge Supporter

    thx, I'll have a look there :)
     

Share This Page