script executes some time but not always.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting script executes some time but not always.
# 1  
Old 04-15-2012
script executes some time but not always.

I have following script to send email when a USB is attached.
Code:
#!/bin/bash

NUMBER=`/bin/cat /u/numberoflines`
LINES=`/usr/bin/wc -l < /var/log/messages`

DIFFERENCE=$(($LINES-$NUMBER))

if [ $DIFFERENCE != 0 ]; then
tail -n $DIFFERENCE /var/log/messages |while read line
do
if $( echo $line | grep --quiet 'New USB device found' )
then
        Email text/message
        EMAIL='myeamilid'
        SUBJECT="New USB device found"
        EMAILMESSAGE="/tmp/emailmessage.txt"
        echo "New USB device found etc ..." > $EMAILMESSAGE
        /bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE

fi
done
echo "$LINES" > /u/numberoflines
fi

Problem with this script is that sometimes it works properly and i can see it using grep command "ps -ef | grep scriptname" but sometimes it doesn't. Unable to understand why it doesn't work sometimes. Please guide.
# 2  
Old 04-15-2012
Hi, just a couple of things that come to mind. Why do you have $( ... )? Does that even work. That should not need to be there (it would only work if there really is no output from those commands inside the command substitution), plus I would replace
Code:
echo $line ...

with
Code:
if printf "%s\n" "$line" | grep ...

. The fact that it sometimes does or does not work, may be due to buffering somewhere, so it works but not yet, not in real time. You can test this by having an extra tail -f and check what is written to the log at what point in time..

Why are you using tail and not tail -f? The tail buffer can also be a factor, it can be that the amount written exceeds what tail can display...

Another possibility is that by the time the script starts to do the tail the number of lines has changed and so some lines will never get read...

If you for some reason you need to use tail instead of tail -f, why don't you run the tail buffer straight through grep instead of line for line?

Does your system use udev? Because that would really be ideal for this application.

Last edited by Scrutinizer; 04-15-2012 at 08:40 PM..
# 3  
Old 04-15-2012
It has udev, as revealed in his other threads on the subject. I think he's trying to make it portable, but I'm not sure he realizes non-Linux systems aren't going to have the same log messages anyway.

I continue to agree that using udev for its intended purpose would be the simplest and most reliable way to do this.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash executes first part of script but not second

My bash below verifies the integrity of all .bam in a directory and writes the out output to a .txt file. That is part one of the script that works. The second part of the bash searches each one of the .txt files for a string "(SUCCESS)" and if found display a message and if it is not found... (6 Replies)
Discussion started by: cmccabe
6 Replies

2. Shell Programming and Scripting

Will shell script executes in sequence

I have a shell script scheduled in cron job to run at every 1 minute which transfers files to remote machine and then move the files to backup folder. cd /u01/app/ftp_tmp sftp user@hostname <<-EOF cd /home/user/ftp mput * bye EOF mv /u01/app/ftp_tmp/* /u01/app/ftp_bkp Now the problem is... (6 Replies)
Discussion started by: Bhavi
6 Replies

3. UNIX for Dummies Questions & Answers

Script partially executes??

Hi All, I am calling a shell script from another shell script, however, it only executes part of it (the echo commands only). What could be some causes for that? For example: ShellScriptA.sh: ... ... ... . ShellScriptB.sh ShellScriptB.sh contents: echo date echo... (7 Replies)
Discussion started by: DBnixUser
7 Replies

4. Shell Programming and Scripting

FTP script - 'quit' never executes

I have wrote a script to get a very large encrypted file from a remote ftp server to a local debian box. The file downloads successfully, but the script never exits, or quits. None of code executes after the ftp get command. The file is approx 291M Here is the code: !/bin/sh... (3 Replies)
Discussion started by: jstrahm
3 Replies

5. Windows & DOS: Issues & Discussions

Batch script executes twice

Hi, Batch script gets executed without any error, but on execution some of the partial contents of the batch file gets appended at the end of the file which is currently in execution, hence the script tries to execute again for the second time , which should not happen. How to get it... (5 Replies)
Discussion started by: milink
5 Replies

6. Shell Programming and Scripting

My script executes too long than expected

Below is my script code which filters failed logins from existing and non-existing users from the server. The problem is, it takes longer to execute and complete than expected. Anyone here can edit the script to speed up its execution. #!/bin/bash LIST=`cat $1` for i in $LIST do... (10 Replies)
Discussion started by: linuxgeek
10 Replies

7. Shell Programming and Scripting

How to write an at command which executes a script every month on 3 rd

Hi Any one pls give me the at command which runs 3 rd of every month at 2 am. Its urgent ...Your help would be so much for me Thanks .. (3 Replies)
Discussion started by: rxg
3 Replies

8. Shell Programming and Scripting

script not working from crontab, executes individual

Hi, This script is working successfully when i executed from shell prompt, but the same script scheduled in crontab its not deleting the files, #! /bin/bash DAY_1=`(date --date='4 months ago' '+%Y-%m')` log=/tmp/cleant adir=/u01/app/oracle/admin/talon/adump... (4 Replies)
Discussion started by: saha
4 Replies

9. Shell Programming and Scripting

root executes a script as another user

Hi All, Am using the below command to start my application using the root user su - bin -c "/home/bin/test/start.sh" but am getting the error becaue i have set some environment varibales in bin's .profile when i execute the command start.sh by logging directly into bin account it's... (9 Replies)
Discussion started by: ravi.sri24
9 Replies

10. Shell Programming and Scripting

root executes a script as another user

we have this script that stops, starts and monitor process scheduler. prcs_control. this script runs perfectly when executed by ps_user. we are now creating a new script that will run this script and is executed by root. this script needs to execute the prcs_control as ps_user because root can... (1 Reply)
Discussion started by: tads98
1 Replies
Login or Register to Ask a Question