It’s not uncommon for me to receive email from people asking for information that’s covered in one or more of my books, and this morning I received a message asking about good places to go online to learn more about shell script programming. My answer, of course, is to buy a copy of my best selling book Wicked Cool Shell Scripts, but if that’s not in your budget, there’s another possibility to explore.
Starting with the August 2004 issue, I am now contributing a monthly column on shell scripting basics to LinuxWorld Magazine called Wicked Cool Linux.
Please take a minute and check out my ever-growing column archive at http://linux.intuitive.com/ and if it looks good, please subscribe to the magazine or at least bookmark the page and come back every month for a new installment of my column.
There are plenty of other online resources too, of course. You need but pop over to Google and search for “unix shell script programming” or “shell scripting tutorial” or “shell scripting guide” (etc etc) to find them.
I’ll also recommend another magazine that’s now in online form: Unix Review.
Hi Buddy…
You can find a lots of unix tips & tricks at http://www.unixground.blogspot.com
Regards,
Sanju
What I did for now, until I think of (or find) a better way:
tail -f /var/log/mail/info writes into a fifo
block_ips reads from the same fifo
Where block_ips is the shell script that processes the log file.
Hmmm…. that’s an interesting question. Let’s see…. I think I would use some sort of loop where I’d use ‘tail -f’ on the relevant file, then sleep some period of time, then check the file again for updates. If you keep track of the lines in the file, you could always use that as a change marker (though you’d sometimes be off an iteration because of the file changing between the ‘wc’ call and the actual test of the returned value).
But it should be quite doable!
Can a shell script read and process a file which is continuously being written to (like the –follow option in tail)?
Basically I would like to read a log file and when I find a certain string, generate a firewall entry to block this IP. The script needs to continuously read this file, not a one time shot.