README.md in iqeo-hostspec-0.1.0.pre2 vs README.md in iqeo-hostspec-0.1.0
- old
+ new
@@ -1,25 +1,105 @@
# Iqeo::Hostspec
[![Gem Version](https://badge.fury.io/rb/iqeo-hostspec.png)](http://badge.fury.io/rb/iqeo-hostspec)
[![Build Status](https://travis-ci.org/iqeo/iqeo-hostspec.png?branch=master)](https://travis-ci.org/iqeo/iqeo-hostspec)
-TODO: Write a gem description
+A program and Ruby library to generate lists of IP addresses from Nmap-style IP host specifications.
+For example:
+```
+hostspec 1.0.0.1-3
+```
+Produces:
+```
+10.0.0.1
+10.0.0.2
+10.0.0.3
+```
+
+In addition to expanding host specs to a list, a command may be executed for each IP address. This enables execution of commands for all hosts on a network. See Program Usage below.
+
## Installation
-Add this line to your application's Gemfile:
+Install a current version of Ruby from [https://www.ruby-lang.org/en/installation/](https://www.ruby-lang.org/en/installation/)
- gem 'iqeo-hostspec'
+Iqeo::Hostspec is packaged as a Ruby gem. To install, execute:
-And then execute:
+```
+gem install iqeo-hostspec
+```
- $ bundle
+To use the library in your own applications:
-Or install it yourself as:
+```ruby
+require 'iqeo/hostspec'
+```
- $ gem install iqeo-hostspec
+## Program Usage
-## Usage
+For help with usage, execute:
-TODO: Write usage instructions here
+```
+hostspec --help
+```
+
+```
+Usage: hostspec [ options ] specs... [ [ -c / --cmd ] command ]
+
+Prints all IP addresses for IP host specifications (see Specs:).
+If specified, a command is executed for each IP address, with related values in environment variables (see Command:).
+
+Specs:
+ Nmap-style IP host specifications, multiple specs separated by spaces.
+ Single host : x.x.x.x or hostname
+ Multiple hosts:
+ - by mask length : x.x.x.x/m or hostname/m
+ - by octet values : x.x.x.a,b,c
+ - by octet ranges : x.x.x.d-e
+ Octet values and ranges may be combined or applied to any/multiple octets.
+ Examples:
+ hostname : localhost => 127.0.0.1
+ hostname w/mask : localhost/24 => 127.0.0.0 127.0.0.1 ... 127.0.0.254 127.0.0.255
+ address : 1.0.0.1 => 1.0.0.1
+ address w/mask : 2.0.0.1/24 => 2.0.0.0 2.0.0.1 ... 2.0.0.254 2.0.0.255
+ address w/values : 3.0.0.10,20,30 => 3.0.0.10 3.0.0.20 3.0.0.30
+ address w/ranges : 4.0.0.40-50 => 4.0.0.40 4.0.0.41 ... 4.0.0.49 4.0.0.50
+ address w/combo : 5.0.0.2,4-6,8 => 5.0.0.2 5.0.0.4 5.0.0.5 5.0.0.6 5.0.0.8
+ multiple octets : 6.1-2,3.4-5.6 => 6.1.4.6 6.1.5.6 6.2.4.6 6.2.5.6 6.3.4.6 6.3.5.6
+
+Command:
+ A command to execute for each IP address may be specified following the command switch ( -c / --cmd ).
+ The command is executed in a separate shell for each IP address.
+ Environment variables are provided with values for each IP address command execution.
+ Quote these variables in the command to prevent substitution by the current shell.
+ $HOSTSPEC_IP : IP address
+ $HOSTSPEC_MASK : Mask (255.255.255.255 if a mask length was not specified)
+ $HOSTSPEC_MASKLEN : Mask length (32 if a mask length was not specified)
+ $HOSTSPEC_COUNT : Count of IP addresses
+ $HOSTSPEC_INDEX : Index of IP address (from 1 to Count)
+ Examples:
+ Print IP addresses and mask length with index and count:
+ hostspec 1.1.1.0/30 --cmd echo '$HOSTSPEC_INDEX' of '$HOSTSPECT_COUNT' : '$HOSTSPEC_IP/$HOSTSPEC_MASKLEN'
+ ...
+ 1 of 4 : 1.1.1.0/255.255.255.252
+ 2 of 4 : 1.1.1.1/255.255.255.252
+ 3 of 4 : 1.1.1.2/255.255.255.252
+ 4 of 4 : 1.1.1.3/255.255.255.252
+ Collect routing tables of all hosts on a network via ssh:
+ hostspec 1.1.1.1-254 --cmd 'ssh me@$HOSTSPEC_IP route -n'
+ Collect default web pages from all servers on a network via curl:
+ hostspec 1.1.1.1-254 --cmd curl -o '$HOSTSPEC_IP.html' 'http://$HOSTSPEC_IP'
+ Collect IP configuration info from multiple windows systems (run from a windows system):
+ hostspec 1.1.1.1-254 --cmd psexec '\\%HOSTSPEC_IP%' ipconfig /all
+ Collect IP configuration info from multiple windows systems (run from a linux system with kerberos):
+ hostspec 1.1.1.1-254 --cmd winexe --kerberos yes //$(dig -x '$HOSTSPEC_IP' +short) ipconfig /all
+ ...or any task that you would have to execute individually on multiple systems.
+
+Options:
+ -h / --help : Display this helpful information
+ -v / --version : Display program version
+```
+
+## License
+
+Licensed under GPLv3, see LICENSE.txt.