#!/bin/bash # Script name : pingnmap # Scenario : The systems admin in company X is tired of the monotonous job # of pinging and nmapping, so he decided to simplify the job using a script. # The tasks he wish to achieve is # 1. Ping - with a max count of 5 -the given IP address/domain. AND/OR # 2. Check if a particular port is open with a given IP address/domain. # And getopts is for her rescue. # A brief overview of the options # n : meant for nmap # t : meant for ping # i : The option to enter the IP address # p : The option to enter the port # v : The option to get the script version while getopts ':nti:p:v' opt #putting : in the beginnnig suppresses the errors for invalid options do case "$opt" in 'i')ip="${OPTARG}" ;; 'p')port="${OPTARG}" ;; 'n')nmap_yes=1; ;; 't')ping_yes=1; ;; 'v')echo "pingnmap version 1.0.0" ;; *) echo "Invalid option $opt" echo "用法: " echo "pingmap -[n|t[i|p]|v]" ;; esac done if [ ! -z "$nmap_yes" ] && [ "$nmap_yes" -eq "1" ] then if [ ! -z "$ip" ] && [ ! -z "$port" ] then nmap -p "$port" "$ip" fi fi if [ ! -z "$ping_yes" ] && [ "$ping_yes" -eq "1" ] then if [ ! -z "$ip" ] then ping -c 5 "$ip" fi fi shift $(( OPTIND - 1 )) # Processing additional arguments if [ ! -z "$@" ] then echo "Bogus arguments at the end : $@" fi
输出结果
$ ./pingnmap -nt -igoogle.com-p 80 Starting Nmap 6.40 ( http://nmap.org ) at 2016-07-23 14:31 IST Nmap scan report forgoogle.com(216.58.197.78) Host is up (0.034s latency). rDNS record for 216.58.197.78: maa03s21-in-f14.1e100.net PORT STATE SERVICE 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds PINGgoogle.com(216.58.197.78) 56(84) bytes of data. 64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=1 ttl=57 time=29.3 ms 64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=2 ttl=57 time=30.9 ms 64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=3 ttl=57 time=34.7 ms 64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=4 ttl=57 time=39.6 ms 64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=5 ttl=57 time=32.7 ms ---google.comping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4007ms rtt min/avg/max/mdev = 29.342/33.481/39.631/3.576 ms $ ./pingnmap -v pingnmap version 1.0.0 $ ./pingnmap -h Invalid option ? 用法: pingmap -[n|t[i|p]|v] $ ./pingnmap -v pingnmap version 1.0.0 $ ./pingnmap -h Invalid option ? 用法: pingmap -[n|t[i|p]|v]