In a if test, you often have to compare the value of two variable
of the value a variable against a fixed value
if you have a list of ip to validate ,
you can use this little bash script ,
this will open your IP list ,
then test if all the 4 numbers that make a standard IP.are beeten 0 and 255
if the ip is valid then the script will return valid , else it will return : not valid
after execution , you will get the following result :
In a script you might be interested to keep 2 or more lines after a regex match ,
the line that interest you are not always going to be right after the match ,
the first one might be X lines after the match and the second one Y lines afters the match
in this example , i’m interested in keeping the lines with the price and the number in stock
i’m going to use awk to search for item desc , and display the 4th line after the match, and 6th line.
in this little example of usage of the command tr
we want to clean a file so the values contained in it can be used
In my example i wish to only keep the value and deleting the character < and >
the tr command used with the -d (delete) option will allow you to delete the list of characters contained between the quotes.
You will obtain the following result
When you scrap data in HTML , it’s common , depending on the quality of you regex to end up with a string with some useless character at the end (Or the Beginning),
If you string looks like that :
My useful data</a> <
You can use the command head to drop the X last character of your string ,
So in my Case , to Keep only the string My useful data and drop the </a> <
I’m going to pipe my string to
This will delete the last 6 chars of my string , giving the data that i need later in my script
but in some implementation of the head command this will not work ,
you can use an alternative with sed
This will delete the last 4 characters of your line , or alternatively
like we saw previously in that article , it’s possible to ping an entire /24 subnet with a little convenient bash one liner.
You will get a result like this.
The Problem is , the IP adresses are going to be displayed in the order they answer the ping , and some devices are going to answer faster than other , making a list that is not in order
the sort command in her default setting will sort using the first changing character , which is going to give me a list like that : 21, 254, 31, 32, 41, 42, 46, 8
If you have installed on you host a recent version of the sort command , you will be able to use sort -V
but on older and some embedded devices the -V option is not available ,
You can then launch the sort command with these options :
the result will be :
if you need to sort a /16 list of ip address :
you can just add -k 3,3 to the command :
Let’s say you are waiting for a host to come back online . to ssh into it
you launch a little
To see when the host return online ,
when the host finally ping , you can ctrl+c to kill the ping , and launch
this will have the effect of launching ssh with the previous argument of the last command , in this case 192.168.1.33
When you do some bash scripting , this is often useful to get data from webserver because they are a very simple way to exchange data from computer from computer.
to put the data that’s available on a webserver into a $var you just have to use the command :
this will fetch the data from http://server.com/file.htm in a non verbose way and put it in variable named var .
you can now do whatever you want with that $var , like greping it for example.
In a bash script if you find yourself with values presented that way
you might want to keep only the second or third of this values that are separated by the : character
like always , in bash there is a lot of ways to accomplish that , but i like to use a one that use the AWK utility because it’s very easy to read and understand.
my list of value is contained in a var name $var let’s extract the third value which is 18.5
Will return the value 18.5
but i can do some math operation in the utility, like :
this will return 326.5 the result of 345 – 18.5
awk is a fast and powerful text editor , there is a lot things you can do with it.
For example in a bash script you need to delete one or more word from the string , you can use sed to do just that
sed is searching for “word to delete” and replacing it with nothing ,
you can of course pipe to that command ,
the var $visitor contain the string : ‘current number of users: 234’
But only the number (234) is usefull to you ,
your can do :
the result is going to be : 234