I have crafted a Bash tool that runs on a server. This tool will block certain IP addresses for a certain time range (i.e. from 5 A.M. to 3:30 P.M.).
As of currently, the tool works fine, but I have to input IP addresses to certain websites manually into a text file and have the tool pull the IP address based on the nth line using the "head" and "tail" commands. I don't want to do this as I believe a single ping will be much more lightweight and portable. So if I do a ping for Google:
ping google.com -c 1 -s 16
The output will be:
Ubuntu@yokai:~# ping google.com -c 1 -s 16 PING google.com (18.104.22.168) 16(44) bytes of data. 24 bytes from qo-in-f138.1e100.net (22.214.171.124): icmp_seq=1 ttl=37 time=46.7 ms --- google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 46.748/46.748/46.748/0.000 ms
And the command I have narrowed this output down with is:
ping google.com -c 1 -s 16 | grep -o '([^ ]*' | tr -d '(44):\n'
Which gives me an output of:
As you can see, there is a duplicate of the same IP address. How can I remove the duplicate with sed so that I can store the single IP address into a variable and run the script as a cronjob, or am I on a better track using tr?
I already know/knew how to resolve IP address from a host name or domain. That is not what I am asking here. This question is specifically about managing ping output using sed in order to keep the tool I have created more portable as ping comes default with almost any and all linux distros.
(UPDATE) Since some marked this question a duplicate of some other bullshit question that has nothing to do with this one, I will make it clear enough that retards with English comprehension troubles can understand:
How to parse the IP ADDRESS "ONLY" from
ping OUTPUT when using
ping on a domain name.
This is NOT asking to resolve a domain name and therefore is NOT A DUPLICATE!!!
I have, since asking this question, learned proper POSIX regex to do what I needed and I need to make it clear that I was originally asking about the regular expressions for
sed that would print a single instance of an IP from ping output. I have since refined my methods and do not use any of the answers here but I thank everyone for their attempts with helping here. I am now using a timer script that I created to configure iptables at certain times to block certain domain name resolutions. Again, thank you to everyone that tried to help.