Newb with While loop question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Newb with While loop question
# 1  
Old 07-21-2010
Newb with While loop question

My first post here....
I have a few years exp with linux distros and some very basic Python..Ive been intent on learning shell scripting the last few weeks. Please excuse my crude efforts.

I am running a program that takes network data containing US city names in plain text. I am TRYING to write a shell scripts that will filter at the nic for specific cities (using tcpdump) and alert both on the monitor and with audio ( and eventually a text message)

Tcpdump and the filters work well however I cant figure out how to accurately display on the monitor and play the wav when a select city is found. (My audio script works well on its own).

This works for me so far...
Code:
tcpdump -s 700 -t -n -N -X src 67.1.1.1 | grep -E "Miami|Austin|Chicago|Reno"'

But when I try to add an audio alert with a loop...

Code:
#! /bin/bash/

func1='tcpdump -s 700 -t -n -N -X src 67.11.11.11 | grep -E "Miami|Austin|Chicago|Reno"'

while true; do
        [ "$func1" ]
        if [ "$func1"!="" ]
       then
            echo " found at " $(date)
            play sound.wav
       else
            continue
       fi
done

The above script comes back comes back positive with every pass of the loop and just prints "found at"

Can anyone give me some direction?
Thanks
Dave (hmm my indents didnt take here. I believe that all my indents are correct. Its the script that is incorrect)

Last edited by fpmurphy; 07-21-2010 at 10:14 PM.. Reason: code tags added
# 2  
Old 07-21-2010
Code:
        if [ "$func1" != "" ]

# 3  
Old 07-22-2010
The indenting doesn't matter (just for readibility).
No need of func, no need of continue statement, it will continue anyway.
Code:
#! /bin/bash
while true
do
    if tcpdump -s 700 -t -n -N -X src 67.11.11.11 | grep -E "Miami|Austin|Chicago|Reno"
    then
        echo " found at " $(date)
        play sound.wav
    fi
done

# 4  
Old 07-22-2010
Frans

I see your point. I figured that I was probably over complicating things.

Tried your suggestion exactly and the filter works well printing the city names however the "'found at' $date" does not display nor does the sound play. (Sound works fine when run independently). For whatever reason, that "then" statement does not complete??
Thanks
Dave
# 5  
Old 07-22-2010
what gives this :
Code:
tcpdump -s 700 -t -n -N -X src 67.11.11.11 | grep -E "Miami|Austin|Chicago|Reno"
echo "Return code : $?"

# 6  
Old 07-22-2010
I ran the code that you supplied and received this. Google search suggests that I likely got that error code from terminating the script (Ctrl+C)

Code:
^C1091 packets captured
1091 packets received by filter
0 packets dropped by kernel
Return code : 130

When I run it this way I get a 0 error code (although Im still killing it with Ctrl+c)

Code:
#! /bin/bash
while true
do
    if tcpdump -s 700 -t -n -N -X src 67.11.11.11 | grep -E "Miami|Austin|Chicago|Reno"
    then
        echo " found at " $(date)
        play sound.mp3
    fi
echo "Return code : $?"
done

1774 packets received by filter
0 packets dropped by kernel
Return code : 0

Moderator's Comments:
Mod Comment Please start using code tags. Thank you.

Last edited by Scott; 07-22-2010 at 03:16 PM.. Reason: Code tags
# 7  
Old 07-22-2010
The returned code is the one of the last command. Maybe here it's of the 'true' at the beginning of the while loop.
Not sure that you can just grep the output of tcpdump to capture the city names.
I'm not familiar with tcpdump, but i think you should look at its manual to find another way.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Question around For Loop

Hi, I have a variable called result that get the the below value i.e two lines assigned../logs/mymac/myserver.log:####<Jun 7, 2015 12:56:54 PM EDT> <myserver.my.bank.com> <mymac> < ExecuteThread: '5' for queue:\ 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <1434640> <BEA-0900>... (0 Replies)
Discussion started by: shifahim
0 Replies

2. UNIX for Dummies Questions & Answers

NEWB Question - BASH COMMAND RESULT for ${0##*/}

This should be extremely simple and someone will probably answer it in .5 seconds. I need to know what: VARIABLE=${0##*/} does? I do not have a shell handy to just try it in. I am reading through some scripts and need to understand this line. Any help is appreciated. Many thanks! -... (3 Replies)
Discussion started by: chrisgoetz
3 Replies

3. Shell Programming and Scripting

Newb question about getting a word from a text file

Hi everyone. I am new to shell scripting and have been looking at quite a few web pages to try and figure this out, but to no avail. What I am trying to do is get a value from a text file that contains a paragraph of information.. Something similar too: Welcome to random script You are... (1 Reply)
Discussion started by: elemenopee
1 Replies

4. Shell Programming and Scripting

BASH loop inside a loop question

Hi all Sorry for the basic question, but i am writing a shell script to get around a slightly flaky binary that ships with one of our servers. This particular utility randomly generates the correct information and could work first time or may work on the 12th or 100th attempt etc !.... (4 Replies)
Discussion started by: rethink
4 Replies

5. Shell Programming and Scripting

Another newb question: how to use test for zero-length string ?

Assume $x equals "". If I try: if test -n $x I get the "Expression syntax" error. It works in Linux but not in unix bash. In unix bourne I get "test: argument expected" (4 Replies)
Discussion started by: lumix
4 Replies

6. Shell Programming and Scripting

Newb scripting question, I get the error script not found

This is probably a really simple problem, but goes easy on me I'm still a newb. The problem I have is that a script (we'll call it script.script) I edited won't run for some reason, I get the error "ksh: script.script: not found" The location of my script is as follows: /home/users/arkitech ... (3 Replies)
Discussion started by: Arkitech
3 Replies

7. UNIX for Dummies Questions & Answers

Ok I'm a Newb, Please Help

I am wanting to download the Linux Program. When i go to download it I see several things to download. What do i download exactly? Then what do I do to install it. Also I have partitioned my hard drive to make way for Linux on the other part to play with it, will any problems arise from this? I... (3 Replies)
Discussion started by: Seeto
3 Replies

8. UNIX for Dummies Questions & Answers

Newb question

I don't even know if this should go here but I just would like to know what this means: d0e45878043844ffc41aac437e86b602 I know absolutely nothin' about UNIX, and I found this in a SQL table in a board I run. Someone please tell me what that is in "normal" mode. Pardon me for my... (4 Replies)
Discussion started by: daeglin
4 Replies

9. UNIX for Dummies Questions & Answers

help for a newb

ok i just installed FreeBSD 4.8 on a computer i had lying around and it was working ok but then when i tried to set up KDE's xdm (kdm) i think i must have configured the login manager wrong because i cant login through the kdm and therefore i can log in to BSD at all?! please can someone help me... (5 Replies)
Discussion started by: h3x
5 Replies

10. Shell Programming and Scripting

newb shell question

I know this is a total begginer question but what is wrong with this picture. My loop wont loop, it just drops me back to the prompt and gives the error "unary operator expected". Any help would be appreciated. here it is, #!/bin/sh selection= while do cat << MENU 1)List files in... (2 Replies)
Discussion started by: Fokus
2 Replies
Login or Register to Ask a Question