Basic examples of Bash Scripting
Goal Ping Sweep a range, generate a list of hosts that respond to ICMP Echo request with a reply
**Format: **Explanation of command + arguments
**ping **on a **count (-c) **of 1
**Grep **= show only quoted string
**Cutting a delimiter (-d) **specified in " " - in this case space
The field specifies the word (in this case the IP address so the flag yields a list of live hosts) of 4.
A _range _can be specified if _4-9 _format is used
**Sed **is used to remove characters from final output 's/.$//' ***Research pending on the syntax of "sed" linux command ***
Example Command
ping -c 1 | grep "64 bytes from" | cut -d " " -f 4 | sed 's/.$//'
**For loop **- don't forget to add **"; done" **at the end so we don't run into '>' prompt issue
Below for loop: pings 1-255 hosts in
**Grep **prints the matching lines "64 bytes from"
**Cut **- remove sections from each #line of files using **"-d". **
--delimiter=DELIM - use delimiter instead of TAB for field delimiter. (in this case a space " ")
**Sed **- stream editor for filtering and transforming text helps us (more research needed on 's/.$//')
for i in {1..255}; do ping -c 1 192.168.1.$i | grep "64 bytes from" | cut -d " " -f 4 | sed 's/.$//'; done
My Traceroute - mtr
** -r **for outputing the results on the terminal
** --no-dns **does not resolve hostnames
sudo mtr -r -c 5 --no-dns | grep "." | cut -d " " -f 4
My traceroute and PING test - && executes command to the right of && after command to the left of && has been completed
In this case, mtr is executed, once it finishes for loop is executed
sudo mtr -r -c 5 && sudo mtr -r -c 5 && for i in {1..254}; do ping -c 5 192.168.1.$i | grep '1'; done
**For loop **+ **mtr **- For i in range 160-190 runs a mytraceroute to specified #X.X.X.$i IP address (no DNS resolution flag)
**Grep **prints #the lines that #contain a "." (such as #ones with dotted decimal IP addresses)
**Cut -d **uses #space as delimiter ; done completes the #loop.
Useful for checking routing path in a whole subnet in dual homed networks with different egress and ingress paths
for i in {160..190}; do sudo mtr -r -c 5 100.65.150.$i --no-dns | grep "." | cut -d " " -f 4; done
But... How to save test results to a file? Add > after command followed by the filename (thanks to @nin)
ping -c 1 > ping.txt
Use the ping command to obtain the IP address of the specified website
ping -c 1 google.com | grep from | cut -d " " -f 4
Copy link