You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Chris Bednarski 4ac0eeb896 Vendor codegangsta/cli 8cbee4b7192cea690c9f048e742e6b4c3525fd9e 8 years ago
cmd/hostess Tweak some help text and variable names 9 years ago
test-fixtures Add test hosts file and basic test for Ls command; fix ls panic 8 years ago
vendor/codegangsta/cli Vendor codegangsta/cli 8cbee4b7192cea690c9f048e742e6b4c3525fd9e 8 years ago
.gitignore Add test hosts file and basic test for Ls command; fix ls panic 8 years ago
.travis.yml Updated go version to 1.6 8 years ago
Dockerfile Added dockerfile 9 years ago
LICENSE Initial commit 9 years ago
Makefile Vendor codegangsta/cli 8cbee4b7192cea690c9f048e742e6b4c3525fd9e 8 years ago
README.md Add coveralls badge 9 years ago
commands.go Add test hosts file and basic test for Ls command; fix ls panic 8 years ago
commands_test.go Add test hosts file and basic test for Ls command; fix ls panic 8 years ago
hostfile.go Added some extra trims to remove whitespace mid-line 9 years ago
hostfile_test.go Fixed some bugs with the default windows hosts file 9 years ago
hostlist.go Changed 'data' to 'jsonbytes' 9 years ago
hostlist_test.go Change some tests to use testify/assert 9 years ago
hostname.go Added dump and apply commands to provide JSON I/O 9 years ago
hostname_test.go Added tests for hostname formatting 9 years ago

README.md

hostess Coverage Status

An idempotent command-line utility for managing your /etc/hosts file.

hostess add local.example.com 127.0.0.1
hostess add staging.example.com 10.0.2.16

Why? Because you edit /etc/hosts for development, testing, and debugging. Because sometimes DNS doesn't work in production. And because editing /etc/hosts by hand is a pain. Put hostess in your Makefile or deploy scripts and call it a day.

Using Hostess

Download and Install

Download a precompiled release from GitHub.

Builds are supported for OSX, Linux, Windows, and RaspberryPi.

Usage

hostess add domain ip   # Add or replace a hosts entry for this domain pointing to this IP
hostess aff domain ip   # Add or replace a hosts entry in an off state
hostess del domain      # (alias rm) Remove a domain from your hosts file
hostess has domain      # exit code 0 if the domain is in your hostfile, 1 otherwise
hostess off domain      # Disable a domain (but don't remove it completely), exit 1 if entry is missing
hostess on domain       # Re-enable a domain that was disabled, exit 1 if entry is missing
hostess list            # (alias ls) List domains, target ips, and on/off status
hostess fix             # Rewrite your hosts file; use -n to dry run
hostess dump            # Dump your hostfile as json
hostess apply           # Add entries from a json file

Flags

-n   # Dry run. Show what will happen but don't do it; output to stdout
-4   # Limit operation to ipv4 entries
-6   # Limit operation to ipv6 entries

hostess will mangle your hosts file. Domains pointing at the same IP will be grouped together and disabled domains commented out.

127.0.0.1 localhost hostname2 hostname3
127.0.1.1 machine.name
# 10.10.20.30 some.host

IPv4 and IPv6

Your hosts file can contain overlapping entries where the same hostname points to both an IPv4 and IPv6 IP. In this case, hostess commands will apply to both entries. Typically you won't have this kind of overlap and the default behavior is OK. However, if you need to be more granular you can use -4 or -6 to limit operations to entries associated with that type of IP.

Developing Hostess

Configuration

By default, hostess will read / write to /etc/hosts. You can use the HOSTESS_PATH environment variable to provide an alternate path (for testing).

Building from Source

To build from source you'll need to have go 1.4+

Install with go get

go get github.com/cbednarski/hostess/cmd/hostess

Install from source

git clone https://github.com/cbednarski/hostess
cd hostess
make
make install