FTP Monitor/Decrypt/Transfer

Below is a set of scripts that I use to monitor an FTP site, when something is found uploaded it downoads the file, moves the orginal to archive, decrypts the pgp , moves the files to their final resting places, and emails me with a notification.


ccg

./control > ccgtransaction`date '+%Y%m%d'`.log

mv ccgtransaction* /mnt/agdevftp/CLIENTS/comprehensive/fromCLIENT/Archive/Log/


control

#mount -t smbfs -o username=will,password=passwdhere //agit/support /mnt/network

#umount /mnt/network


./listfiles

if diff --brief list list.default

then

set new "no"

echo "`date` No new files." >> log

else

echo "New File" > newfile

echo "`date` New files present." >> log

while read file

do

if [[ $file == archive* ]]

then

echo "`date` $file was found to be archived"

else

echo "`date` $file" >> log

./ftpget $file

./ftprename $file

fi

done
cd files

./../decryptcntl *

cd ..

./movefiles

fi


if [ -f newfile ]

then

php mail.php

rm -f newfile

fi


decryptcntl

./../decryptpgp $1

./../decryptpgp $2

./../decryptpgp $3

./../decryptpgp $4

./../decryptpgp $5

./../decryptpgp $6

./../decryptpgp $7

./../decryptpgp $8

./../decryptpgp $9

./../decryptpgp $10


decryptpgp

#!/usr/bin/expect -f


set force_conservative 0 ;# set to 1 to force conservative mode even if

;# script wasn't run conservatively originally

if {$force_conservative} {

set send_slow {1 .1}

proc send {ignore arg} {

sleep .1

exp_send -s -- $arg

}

}


set timeout -1


set arg1 [lindex $argv 0]

set arg2 [lindex $argv 1]


cd /root/ftp/files


spawn gpg --decrypt-files $arg1

match_max 100000

expect "Enter passphrase: "

send "pgppasshere\r"

send "\r\r"

expect eof


ftpclear

#!/usr/bin/expect -f


set force_conservative 0 ;# set to 1 to force conservative mode even if

;# script wasn't run conservatively originally

if {$force_conservative} {

set send_slow {1 .1}

proc send {ignore arg} {

sleep .1

exp_send -s -- $arg

}

}


set timeout -1

spawn ftp ftp.eedi.net

match_max 100000

expect "Name (ftp.eedi.net:root): "

send -- "userhere\r"

expect "Password:"

send -- "passwdhere\r"

expect "ftp> "

send -- "cd inbox\r"

expect "ftp> "

send -- "prompt\r"

expect "ftp> "

send -- "lcd files\r"

expect "ftp> "

send -- "mdelete *\r"

expect "ftp> "

send -- "bye\r"

expect eof


ftpget

#!/usr/bin/expect -f


set force_conservative 0 ;# set to 1 to force conservative mode even if

;# script wasn't run conservatively originally

if {$force_conservative} {

set send_slow {1 .1}

proc send {ignore arg} {

sleep .1

exp_send -s -- $arg

}

}


set arg1 [lindex $argv 0]


set timeout -1

spawn ftp ftp.eedi.net

match_max 100000

expect "Name (ftp.eedi.net:root): "

send -- "userhere\r"

expect "Password:"

send -- "passwdhere\r"

expect "ftp> "

send -- "cd inbox\r"

expect "ftp> "

send -- "prompt\r"

expect "ftp> "

send -- "lcd files\r"

expect "ftp> "

send -- "mget $arg1\r"

expect "ftp> "

send -- "bye\r"

expect eof


ftprename

#!/usr/bin/expect -f


set force_conservative 0 ;# set to 1 to force conservative mode even if

;# script wasn't run conservatively originally

if {$force_conservative} {

set send_slow {1 .1}

proc send {ignore arg} {

sleep .1

exp_send -s -- $arg

}

}


set arg1 [lindex $argv 0]

#set arg2 [lindex $argv 1]

set arg2 "archive/$arg1"


set timeout -1

spawn ftp ftp.eedi.net

match_max 100000

expect "Name (ftp.eedi.net:root): "

send -- "userhere\r"

expect "Password:"

send -- "passwdhere\r"

expect "ftp> "

send -- "cd inbox\r"

expect "ftp> "

send -- "rename $arg1\r"

expect "(to-name) "

send "$arg2\r"

expect "ftp> "

send -- "bye\r"

expect eof


listfiles

#!/usr/bin/expect -f


set force_conservative 0 ;# set to 1 to force conservative mode even if

;# script wasn't run conservatively originally

if {$force_conservative} {

set send_slow {1 .1}

proc send {ignore arg} {

sleep .1

exp_send -s -- $arg

}

}


set timeout -1

spawn ftp ftp.eedi.net

match_max 100000

expect "Name (ftp.eedi.net:root): "

send -- "userhere\r"

expect "Password:"

send -- "passwdhere\r"

expect "ftp> "

send -- "cd inbox\r"

expect "ftp> "

send -- "prompt\r"

expect "ftp> "

send -- "mls - list\r"

expect "ftp> "

send -- "bye\r"

expect eof


mail.php


mail("will@aghealth123.com,jonn@aghealth123.com","CCG Activity","CCG Activity has been detected\nAll files should have been transfered and inital processing completed\nPlease verify this has occured and view the applicable log\n\\\\agdev\\ftp\\CLIENTS\\comprehensive\\fromCLIENT\\Archive\\Log",

"From: CCGActivity\n");

?>


mapdrives

mount -t smbfs -o username=user,password=passwd //agapp/mars3 /mnt/agappmars3

mount -t smbfs -o username=user,password=passwd //agdev/ftp /mnt/agdevftp


movefile

cd /root/ftp/files

mv *.pgp /mnt/agdevftp/CLIENTS/comprehensive/fromCLIENT/Archive/

mv * /mnt/agappmars3/EDIFILES/CCG/fromClient