I am trying to build a script in perl that will alllow me to pass the IP address to a ping command and redirect the output to a file and then kill that process after a certain period of time.
let's say, I call my script ping.pl, I would like to be able to run it like this for example : ./ping.pl 127.0.0.1 60 (where 127.0.0.1 will be the ip address I want to run the ping command on and 60 will be the period is seconds I would like the ping command to run and kill process ID for this ping command after this period).
I started out like this, but it looks like when I enter the command ./ping.pl 127.0.0.1 60. Nothing never happens. When I type in the IP, hit enter and type 60, hit enter. It starts working. It creates the file, but it never stops running. The process has never been killed. Any help will be appreciated.
I would like to be able to run the script on one line command with the arguments like ./ping.pl 127.0.0.1 60 ( it could be any IP and any time).
i see you use system tools within your Perl script. If that's the case, ditch this ugly method, and do everything with a shell script. Use $1, $2 as your arguments.
I'm not if the perl system commands are the exact same as shell commands, butif they are, the ping command will just keep pinging forever, so the script is effectively stuck on the ping line and never gets to the sleep or kill lines.
Use "ping -c " to ping a certain number of times, e.g. "ping -c 2 google.com" will ping twice, or use "&" to put the ping line in the background.
Also, liberal use of kill -9 is not good practice and this should be avoided. A simple killl should suffice, perhaps with an additional check that may lead to further action.
Perhaps we should call it: UUoK-9
Also - in situations where there still is a need to get the pid off the process list - note that with
kill $(ps aux | grep ping | awk '{ print $2 }' )
the grep process gets selected and killed too..
You can avoid that by using
Thanks Pouchie1. No I think it can be done using Perl. You could probably use Net::Ping (I haven't used it myself). What is being said is that if you are going to use system tools to accomplish your goal then effectively you are using almost only external commands and you might as well use a shell script instead.