How to tail sed and awk in one line?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to tail sed and awk in one line?
# 15  
Old 10-14-2016
Hello,

At first, I have to express that I admire your approach as you paid attention to all my questions.

Here is my ban.sh file
Code:
#!/bin/bash
prefix="/sbin/iptables -A INPUT -s "
while read -r line
do
 echo "${prefix}$line"
done <ip > fail2ban_ip
sed -e 's/$/ -p tcp --dport 44056 -j DROP/' -i fail2ban_ip
chmod 755 fail2ban_ip
./fail2ban_ip
sleep 2
exit 0

Don's latest code is waiting for a new attack at the background, it works!

Thank you Don & Rudic

Kind regards
Boris
# 16  
Old 10-14-2016
When you're using sed anyhow, why, then, the while loop?
How about
Code:
sed  's:^:/sbin/iptables -A INPUT -s :; s:$: -p tcp --dport 44056 -j DROP:' ip | sh

to replace the entire script?
This User Gave Thanks to RudiC For This Post:
# 17  
Old 10-14-2016
Thanks Rudic,

Code:
#!/bin/bash
sed  's:^:/sbin/iptables -A INPUT -s :; s:$: -p tcp --dport 44056 -j DROP:' ip | sh
exit 0

Kind regards
Boris
# 18  
Old 10-16-2016
When I look back to what has been discussed in this thread, I think the entire overall script can be condensed into one single awk line, making ban.sh unnecessary (unless it is used elsewhere as well). Please try
Code:
awk '/myword/ && !a[$1]++ {print "/sbin/iptables -A INPUT -s " $1 " -p tcp --dport 44056 -j DROP"}' /var/log/apache2/access.log | sh

and come back with the results, commented.
This User Gave Thanks to RudiC For This Post:
# 19  
Old 10-16-2016
Quote:
Originally Posted by RudiC
When I look back to what has been discussed in this thread, I think the entire overall script can be condensed into one single awk line, making ban.sh unnecessary (unless it is used elsewhere as well). Please try
Code:
awk '/myword/ && !a[$1]++ {print "/sbin/iptables -A INPUT -s " $1 " -p tcp --dport 44056 -j DROP"}' /var/log/apache2/access.log | sh

and come back with the results, commented.
I was looking at this too. To get the continuous looping effect as updates are added to the log file, I think we need three processes instead of just two:
Code:
tail -f  /var/log/apache2/access.log |
  awk '/myword/ && !a[$1]++ {print "/sbin/iptables -A INPUT -s " $1 " -p tcp --dport 44056 -j DROP"}' |
  sh

If the log file rotates, you would need to either restart this script when the log rotates; or, if the tail utility on your system has an option to reopen its input file if the input file name changes, add the appropriate option(s) to make that happen.
This User Gave Thanks to Don Cragun For This Post:
# 20  
Old 10-17-2016
Just a comment that needs to be tested and proven right or wrong: You may want to play with buffering (e.g. man stdbuf on linux) to improve reaction times ...
# 21  
Old 10-17-2016
Hello Rudic,
It gave an empty ip file at my end


Kind regards
Boris
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multiple line search, replace second line, using awk or sed

All, I appreciate any help you can offer here as this is well beyond my grasp of awk/sed... I have an input file similar to: &LOG &LOG Part: "@DB/TC10000021855/--F" &LOG &LOG &LOG Part: "@DB/TC10000021852/--F" &LOG Cloning_Action: RETAIN &LOG Part: "@DB/TCCP000010713/--A" &LOG &LOG... (5 Replies)
Discussion started by: KarmaPoliceT2
5 Replies

2. Shell Programming and Scripting

sed and awk giving error ./sample.sh: line 13: sed: command not found

Hi, I am running a script sample.sh in bash environment .In the script i am using sed and awk commands which when executed individually from terminal they are getting executed normally but when i give these sed and awk commands in the script it is giving the below errors :- ./sample.sh: line... (12 Replies)
Discussion started by: satishmallidi
12 Replies

3. UNIX for Dummies Questions & Answers

What should be precedence of using awk, sed, head and tail in UNIX?

Hi All, I am new to unix. In this forum some days back, I have read something like below: 1) Do not use perl if awk can do your work. 2) Do not use awk if sed can do your work. . . . I do not re-collect the whole thing. I think it is good to know the precedence of using these... (2 Replies)
Discussion started by: Prathmesh
2 Replies

4. Shell Programming and Scripting

sed or awk to replace a value in a certain line.

I have an input like following. *DEFINE_CURVE_TITLE Force for tool binder $# lcid sidr sfa sfo offa offo dattyp 3 0 1 .000000 125.00000 0.000 0.000 0 $# a1 ... (5 Replies)
Discussion started by: hamnsan
5 Replies

5. UNIX for Advanced & Expert Users

sed one liner simialr to tail command

Can anyone explain the below sed oneliner? sed -e ':a' -e '$q;N;11,$D;ba' It works same as tail command. I just want to know how it works. Thanks (1 Reply)
Discussion started by: pandeesh
1 Replies

6. Shell Programming and Scripting

awk;sed appending line to previous line....

I know this has been asked before but I just can't parse the syntax as explained. I have a set of files that has user information spread out over two lines that I wish to merge into one: User1NameLast User1NameFirst User1Address E-Mail:User1email User2NameLast User2NameFirst User2Address... (11 Replies)
Discussion started by: walkerwheeler
11 Replies

7. Solaris

Tail command in one line

HI i have to copy the last 5000 lines form a log file and copy the same in the same file .overwriting the same log file. ex: tail -5000 testfile1 > testfile2 cat testfile2 mv tesftfile2 testfile1 will produce the correct result.but i want to have this done in one line???? (4 Replies)
Discussion started by: saurabh84g
4 Replies

8. Shell Programming and Scripting

Read logline line by line with awk/sed

Hello, I have a logfile which is in this format: 1211667249500#3265 1211667266687#2875 1211667270781#1828 Is there a way to read the logfile line by line every time I execute the code and put the two numbers in the line in two separate variables? Something like: 1211667249500#3265... (7 Replies)
Discussion started by: dejavu88
7 Replies

9. Shell Programming and Scripting

Head and Tail in One Line

I am new to UNIX......I have one file which contains thousnads of records with header and tailer. Header Record 1 Record 2 .... .... Last Record Trailer I want to concatenate Header and Trailer in the first line....now the output should look like this: Header: Header value, Trailer:... (2 Replies)
Discussion started by: 33junaid
2 Replies

10. UNIX for Dummies Questions & Answers

how to sed with tail

hi, I am searching error and exception in my log and >> to report file, my code is : sed -n '//p;//p' $ARIBA_LOG_DIR/MyLog.txt >> $LOG_ERR_REP I need to report avove 5 line, that line and bellow 5 line.. what change is required in my code? (1 Reply)
Discussion started by: redlotus72
1 Replies
Login or Register to Ask a Question