Shell scripting-I need a script which should watch a directory for a file with specific directory
I need a script which should watch a directory for a file with specific directory.
If it finds a file in directory, it should search for few specific keyword in the file. if the keyword exists, it should trim string from specific column.
The file should be moved to another directory and the a mail should be sent to list of email id's and email body should contain the strings which have been trimmed.
For example, I have a file GEFCO_INVRPTB9PDB_VIB1.351.egs. The script should look for lines starting with CSG2 and ARD1. If it starts with CSG2,Script should copy data between position 5-20 and put it into the body of email.
Also, the original file should be moved to another directory.
Code:
UNB10941A780843653 0941A081195390TEST 10000006 140603 2300 GEFCO-SALCEDA 25843
UNH1INVRPTSH 140603 2300 25843 20
MID1VIB1540 20140603 2224
NAD1SDT 0060183727804 28734G 16 VISTEON SISTEMAS INTERIORES EL CERQUIDO S/N 36472 SALCEDA DE CASELAS ES CARLOS MARQUES 986343402 986346252 28734G 10
NAD1CDT 0941A780843654 VIGO GEFCO CTL1 CTL GEFCO ESPANA AVENIDA CITROEN, S/N ZONA FRANCA 36210 VIGO ES JOSE BRION 986214434 986212363 5
CSG1006046200400300000 PEUGEOT CITROEN AUTOMOBILES AVENIDA CITROEN 36210 VIGO ES
CSG2FV6VFF
ARD196738649ES 1 20140602 2255 18 PCE VIB1540 00000000 925064500ES 1 1 2 2X 006046200400300000 PEUGEOT CITROEN AUTOMOBILES AVENIDA CITROEN 36210 VIGO ES 0060183727804 VISTEON SISTEMAS INTERIORES EL CERQUIDO S/N 36472 SALCEDA DE CASELAS ES 0060183727804 VISTEON SISTEMAS INTERIORES EL CERQUIDO S/N 36472 SALCEDA DE CASELAS ES 0060183727804 VISTEON SISTEMAS INTERIORES EL CERQUIDO S/N 36472 SALCEDA DE CASELAS ES 20140602 2255 VIB1540 1 1 1 04760 04760 1 PCE
Last edited by Franklin52; 08-12-2014 at 07:33 AM..
Reason: fixed code tags
Well, that's quite a wide post, I must admit. Is that truely how the data looks?
Anyway, I have a few to questions pose in response first:-
What have you tried so far?
What output/errors do you get?
What OS and version are you using?
What are your preferred tools? (C, shell, perl, awk, etc.)
What logical process have you considered? (to help steer us to follow what you are trying to achieve)
Most importantly, What have you tried so far?
There are probably many ways to achieve most tasks, so giving us an idea of your style and thoughts will help us guide you to an answer most suitable to you so you can adjust it to suit your needs in future.
We're all here to learn and getting the relevant information will help us all.
This is what I had been trying to get it done.
But problem comes when I use cut command to get the key. It cuts all the fields at once because of which I am not able to use it in if command.
Code:
# Function for file watching
function mailMsg
{
if [ $# -ne 3 ]
then
echo "ERROR: Usage is $0 MAIL_SUBJECT MAIL_RECIPIENT MAIL_MESSAGE"
return 1
fi
mail -s "$1" $2 <<ENDMAIL
$3
ENDMAIL
}
nDEF_EDI_ADMIN_EMAIL=adeepak@visteon.com,cgd@qad.com
DEF_EDI_LOG=/ediec/log/"${CURR_PRG_NAME}".log
DEF_EDI_TEMP_DIR=/ediec/3271010/in/tempin
DEF_EDI_IN_DIR=/ediec/3271010/in/
echo `pwd`
cd /ediec/3271010/in/tempin
echo `pwd`
CSG2="CSG2"
ARD1="ARD1"
Dockcodes="Dockcodes.txt"
#while true
#do
file_list=$( ls GEFCO_INVRPTB9PDB* 2>/dev/null )
if [ -n "{$file_list}" ];
then
#echo "inside in"
for file_name in ${file_list};
do
echo "file_name" $file_name
tt=`grep -i CSG2 ${file_name}` >> Dockcodes.txt
aa=`grep -i ARD1 ${file_name}` >> Dockcodes.txt
#echo "dock" $dock "part" $part
# while read aline
# do
# echo "ttemp2.txt"
#cat temp2.txt
key=`cut -c1-4 Dockcodes.txt`
echo "key" $key
if [ $key = 'CSG2' ]
then
dock=`cut -c5-20 Dockcodes.txt`
echo $dock
fi
if [ $key = 'ARD1' ]
then
part=`cut -c5-40 Dockcodes.txt`
qty=`cut -c93-107 Dockcodes.txt`
fi
echo "dock" $dock "part" $part "qty" $qty
# done < Dockcodes.txt
#echo "Dockcodes.txt"
#cat Dockcodes.txt
#rm Dockcodes.txt
#echo "inside for ${file_name}"
#cat $file_name >> temp.txt
# mailMsg "${file_name} has been moved to ${DEF_EDI_IN_DIR} directory" "${DEF_EDI_ADMIN_EMAIL}" ""
# mv ${file_name} ${DEF_EDI_IN_DIR}
#echo "before done"
done
fi
I need help to write shell script to copy files from one server to another server.
Source Directory UAE(inside i have another folder Misc with files inside UAE folder).I have to copy this to another server UAE folder( Files should be copied to UAE folder and Misc files should be copied in target... (3 Replies)
I have a script, which is checking if file exists and move it to another directory
if
then
mkdir -p ${LOCL_FILES_DIR}/cool_${Today}/monthly
mv report_manual_alloc_rpt_A_I_ASSIGNMENT.${Today}*.csv ${LOCL_FILES_DIR}/cool_${Today}/monthly
... (9 Replies)
I'm trying to write a Unix script that will go to a specific directory (/tmp/Sanbox/logs) and tar.gz all the log files in that directory and delete the original files that are older than 2 days. So far I have this but it doesn't work. Any help would be appreciated.
#!/bin/bash
... (7 Replies)
I have files in a Linux directory . Some of the file is listed below
-rw-rw-r--. 1 roots roots 0 Dec 23 02:17 zzz_123_00000_A_1.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_121_00000_A_2.csv
-rw-rw-r--. 1 roots roots 0 Dec 23 02:18 zzz_124_00000_A_3.csv
drwxrwxr-x. 2 roots roots 6 Dec 23... (4 Replies)
Hi,
Could you please assist how to move the gz files which are older than the 90 days from one folder to another folder ,before that it need to check the file system named "nfs" if size is less than 90 or not. If size is above 90 then it shouldn't perform file move and exit the script throwing... (4 Replies)
My input is as below :
/splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt
/splunk/scrubbed/rebate/IFIND.REBTE.WROC.txt
/splunk/scrubbed/loyal/IFIND.HELLO.WROC.txt
/splunk/scrubbed/triumph/ifind.triumph.txt
From the above input I want to extract the file names only .
Basically I want to... (5 Replies)
I am seeing the following error appear numerous times in my Apache error log:
I have my Apache config configured as below, so I would expect indexing not to occur on this directory as it falls under the parent /web directory.
Strangely all the IP address, including this example, all... (5 Replies)
Hi all,
This is actually more for my lazyness then anything else, but I think others might find it useful to use as well. Basically this is what I am trying to achieve...
In my ubuntu home dir under Downloads is where firefox saves everything by default, now I know that you can manually... (3 Replies)
I have a directory /ndata/nmk
I want to have 4 copies of my daily database backups like /ndata/nmk/copy1
/ndata/nmk/copy2 till copy4 .
where copy1-copy4 are directories having my db backups .
Once my db backups reach 4 directories like copy4 i want to again write from copy1 to copy4 .
... (3 Replies)
Hi, everybody
I want to know hot to watch changes on a dir, for example if someone changes a file inside it, with an script. I've tried using md5sum and then diff, sadly with no success.
I use md5sum for single files, but doesn't work for directories. The idea is take a snapshot with md5sum,... (4 Replies)