dog is a command-line DNS client, like dig

Overview

dog

dog is a command-line DNS client.

Build status Say thanks!

A screenshot of dog making a DNS request


Dogs can look up!

dog is a command-line DNS client, like dig. It has colourful output, understands normal command-line argument syntax, supports the DNS-over-TLS and DNS-over-HTTPS protocols, and can emit JSON.

Examples

dog example.net                          Query a domain using default settings
dog example.net MX                       ...looking up MX records instead
dog example.net MX @1.1.1.1              ...using a specific nameserver instead
dog example.net MX @1.1.1.1 -T           ...using TCP rather than UDP
dog -q example.net -t MX -n 1.1.1.1 -T   As above, but using explicit arguments

Command-line options

Query options


   
                  Human-readable host names, nameservers, types, or classes
-q, --query=HOST         Host name or domain name to query
-t, --type=TYPE          Type of the DNS record being queried (A, MX, NS...)
-n, --nameserver=ADDR    Address of the nameserver to send packets to
--class=CLASS            Network class of the DNS record being queried (IN, CH, HS)

   

Sending options

--edns=SETTING           Whether to OPT in to EDNS (disable, hide, show)
--txid=NUMBER            Set the transaction ID to a specific value
-Z=TWEAKS                Set uncommon protocol-level tweaks

Protocol options

-U, --udp                Use the DNS protocol over UDP
-T, --tcp                Use the DNS protocol over TCP
-S, --tls                Use the DNS-over-TLS protocol
-H, --https              Use the DNS-over-HTTPS protocol

Output options

-1, --short              Short mode: display nothing but the first result
-J, --json               Display the output as JSON
--color, --colour=WHEN   When to colourise the output (always, automatic, never)
--seconds                Do not format durations, display them as seconds
--time                   Print how long the response took to arrive

Installation

To install dog, you can download a pre-compiled binary, or you can compile it from source. You may be able to install dog using your OS’s package manager, depending on your platform.

Packages

  • For Arch Linux, install the dog package.
  • For Homebrew on macOS, install the dog formula.
  • For NixOS, install the dogdns package.

Downloads

Binary downloads of dog are available from the releases section on GitHub for 64-bit Windows, macOS, and Linux targets. They contain the compiled executable, the manual page, and shell completions.

Compilation

dog is written in Rust. You will need rustc version 1.45.0 or higher. The recommended way to install Rust for development is from the official download page, using rustup.

To build, download the source code and run:

$ cargo build
$ cargo test
  • The just command runner can be used to run some helpful development commands, in a manner similar to make. Run just --list to get an overview of what’s available.

  • If you are compiling a copy for yourself, be sure to run cargo build --release or just build-release to benefit from release-mode optimisations. Copy the resulting binary, which will be in the target/release directory, into a folder in your $PATH. /usr/local/bin is usually a good choice.

  • To compile and install the manual pages, you will need pandoc. The just man command will compile the Markdown into manual pages, which it will place in the target/man directory. To use them, copy them into a directory that man will read. /usr/local/share/man is usually a good choice.

Container image

To build the container image of dog, you can use Docker or Kaniko. Here an example using Docker:

$ docker build -t dog .

You can then run it using the following command:

$ docker run -it --rm dog

To run dog directly, you can then define the following alias:

$ alias dog="docker run -it --rm dog"

End-to-end testing

dog has an integration test suite written as Specsheet check documents. If you have a copy installed, you can run:

$ just xtests

Specsheet will test the compiled binary by making DNS requests over the network, checking that dog returns the correct results and does not crash. Note that this will expose your IP address. For more information, read the xtests README.

Feature toggles

dog has three Cargo features that can be switched off to remove functionality. While doing so makes dog less useful, it results in a smaller binary that takes less time to build.

There are three feature toggles available, all of which are active by default:

  • with_idna, which enables IDNA processing
  • with_tls, which enables DNS-over-TLS
  • with_https, which enables DNS-over-HTTPS (requires with_tls)

Use cargo to build a binary that uses feature toggles. For example, to disable TLS and HTTPS support but keep IDNA support enabled, you can run:

$ cargo build --no-default-features --features=with_idna

The list of features that have been disabled can be checked at runtime as part of the --version string.


Documentation

For documentation on how to use dog, see the website: https://dns.lookup.dog/

See also

mutt, tail, sleep, roff

Licence

dog’s source code is licenced under the European Union Public Licence.

Comments
  • Consider changing default set of records

    Consider changing default set of records

    I really like this tool! However, one convenience feature that I'm missing is "Just show me commonly useful information about this domain". I know that with dig and drill you can use ANY but that's not quite what I want in most cases. Frankly, I'd be happy about ALL or --all or something like that which showed the equivalent of dog example.net A AAAA NS MX TXT SOA CNAME. Personally, I'd even like that by default.

    For instance, nowadays you at least have A and AAAA entries and dog by default only shows A which I don't think is very "modern" as a default. I know that other tools have the same default but in my understanding, dog is supposed to be convenient, too.

    opened by svenstaro 8
  • Always getting connection refused, no matter what I query

    Always getting connection refused, no matter what I query

    On my system, no matter what I query, I always get:

    dog example.net
    Error [network]: Connection refused (os error 111)
    
    dog google.com
    Error [network]: Connection refused (os error 111)
    
    $ dog --version 
    dog ● command-line DNS client
    v0.1.0
    https://dns.lookup.dog/
    

    I'm on Arch Linux. My network is actually fairly simple. I use systemd-resolved for my usual DNS. drill and dig are perfectly happy performing the queries.

    $ resolvectl
    Global
           LLMNR setting: yes                 
    MulticastDNS setting: yes                 
      DNSOverTLS setting: no                  
          DNSSEC setting: no                  
        DNSSEC supported: no                  
      Current DNS Server: 127.0.0.1           
             DNS Servers: 127.0.0.1           
    Fallback DNS Servers: 1.1.1.1             
                          9.9.9.10            
                          8.8.8.8             
                          2606:4700:4700::1111
                          2620:fe::10         
                          2001:4860:4860::8888
    
    Link 2 (enp67s0)
          Current Scopes: none
    DefaultRoute setting: no  
           LLMNR setting: yes 
    MulticastDNS setting: no  
      DNSOverTLS setting: no  
          DNSSEC setting: no  
        DNSSEC supported: no  
    
    Link 3 (br0)
          Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
    DefaultRoute setting: yes                      
           LLMNR setting: yes                      
    MulticastDNS setting: no                       
      DNSOverTLS setting: no                       
          DNSSEC setting: no                       
        DNSSEC supported: no                       
      Current DNS Server: 10.13.37.1               
             DNS Servers: 10.13.37.1               
                          fd00::3681:c4ff:fee4:7801
    
    Link 4 (docker0)
          Current Scopes: none
    DefaultRoute setting: no  
           LLMNR setting: yes 
    MulticastDNS setting: no  
      DNSOverTLS setting: no  
          DNSSEC setting: no  
        DNSSEC supported: no  
    
    Link 5 (br-b1c82fd2937d)
          Current Scopes: none
    DefaultRoute setting: no  
           LLMNR setting: yes 
    MulticastDNS setting: no  
      DNSOverTLS setting: no  
          DNSSEC setting: no  
        DNSSEC supported: no  
    
    opened by svenstaro 8
  • [Windows] Prints ANSI codes instead of colored text

    [Windows] Prints ANSI codes instead of colored text

    • dog version: 0.1.0 (Downloaded prebuilt binary from https://github.com/ogham/dog/releases/tag/v0.1.0 )
    • OS: Windows 10 (Microsoft Windows [Version 10.0.19042.572])

    Maybe need to call enable_ansi_support function somewhere...?

    image

    opened by gaeulbyul 5
  • installing via homebrew on ubuntu 20.04 fails

    installing via homebrew on ubuntu 20.04 fails

    Not sure if this is something that you might fix or if this is an issue with homebrew somehow, but trying to install dog via homebrew: brew install dog on ubuntu 20.04, getting this error:

    ==> Downloading https://github.com/ogham/dog/archive/v0.1.0.tar.gz
    Already downloaded: /home/pavel/.cache/Homebrew/downloads/e9869860b4b74bd1955a7e4be363a6bbd20d683ca8b4cf4942938e6567865c15--dog-0.1.0.tar.gz
    ==> cargo install
    Last 15 lines from /home/pavel/.cache/Homebrew/Logs/dog/01.cargo:
      If you're in a situation where you think the directory *should* be found
      automatically, please open a bug at https://github.com/sfackler/rust-openssl
      and include information about your system as well as this message.
    
      $HOST = x86_64-unknown-linux-gnu
      $TARGET = x86_64-unknown-linux-gnu
      openssl-sys = 0.9.58
    
      ', /home/pavel/.cache/Homebrew/cargo_cache/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.58/build/find_normal.rs:157:5
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `dog v0.1.0 (/tmp/dog-20201110-1700102-b2dqt0/dog-0.1.0)`, intermediate artifacts can be found at `/tmp/dog-20201110-1700102-b2dqt0/dog-0.1.0/target`
    
    Caused by:
      build failed
    
    READ THIS: https://docs.brew.sh/Troubleshooting
    
    opened by sagor999 4
  • Support querying unknown types

    Support querying unknown types

    Cool project!

    It would be great if the --type parameter enabled the user to query types that dog doesn't know about.

    RFC3597 section 5 describes a conventional text representation for unknown (and optionally known) RR types:

       In the "type" field of a master file line, an unknown RR type is
       represented by the word "TYPE" immediately followed by the decimal RR
       type number, with no intervening whitespace.
    

    For example, --type=TYPE28 would be equivalent to --type=AAAA.

    I'd contribute a patch, but unfortunately my hands are tied due to the license.

    opened by dmcardle 3
  • Homebrew formula

    Homebrew formula

    Hi @ogham 👋

    Thanks for building this neat utility. 👍

    I've created a Homebrew formula for dog but until it passes 75 stars it can't be submitted to the default formulae. Once that happens feel free to ping me or submit my work directly. In the meantime, you can test it using the following command:

    brew install vladimyr/vladimyr/dog
    

    Formula source → https://github.com/vladimyr/homebrew-vladimyr/blob/aa8e7e1/Formula/dog.rb

    opened by vladimyr 3
  • Allow _ in domain names

    Allow _ in domain names

    While using dog locally to check some specific DKIM records, I realised that the _ was not recognised as a valid character in a domain name.

    $ dog default._domainkey.barrobes.com TXT
    dog: Invalid options: Invalid domain "default._domainkey.barrobes.com"
    

    After the change:

    $ cargo run -q default._domainkey.barrobes.com TXT
    TXT default._domainkey.barrobes.com. 1h53m30s   "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwOHVlAPSLPIbBSuXThuNq+d4OXI9A3Gln10RRN1c5ZIyrXkPReqAuBVp+/IFXHJdyCXPCmF/aAfs1Iiu3oXzVSPIOZIpVEfEIBazs2RHvnWFCJWom+O6tbWRmKAyacVZQfEhrdA8LPzCjSEXRs4wUClyQuOvDU1qOik5CAbsTYcL60eahdId+xiZFlDfrFf/OIdsR/diX91ur3hUBbO4H7Iue3DXBqgmAIvmi57DibqTbwOz+UXF7Bqoxe0pFlljQi18UV9Ck7mASq7qDAmMqQwqMJ24XPvKCiw2KLBWOrSqBXzzBinZTS/9WlkDFXcBH1ewyIpWixQeXcZjq7oMQwIDAQAB;"
    

    It still works with IDNA domains:

    $ cargo run -q österreich.icom.museum
    CNAME xn--sterreich-z7a.icom.museum. 9m29s   "redirections.icom.museum."
        A redirections.icom.museum.      9m29s   81.201.190.55
    $ cargo run -q беларусь.icom.museum
    CNAME xn--80abmy0agn7e.icom.museum. 10m00s   "redirections.icom.museum."
        A redirections.icom.museum.      9m59s   81.201.190.55
    

    Possibly this fix is not the right/full solution, but it's a way to keep the ball rolling. I didn't want to have a separate build of dog disabling IDNA just for this purpose (that might have done it). I think it should be possible to support IDNA and still allow for underscores.

    Open to any suggestions, and happy to add tests.

    opened by txels 2
  • Allow different tls implementations with cargo features

    Allow different tls implementations with cargo features

    This is a first try to fix #53 and #21

    It uses different features to allow the user to choose a tls implementation. For example, all of the following work:

    cargo build # Will use with_tls+with_https using nativetls
    
    cargo build --all-features # Will compile with with_tls+with_https+with_nativetls+withrustls but it will use nativetls
    
    cargo build --no-default-features --features with_tls,with_https,with_rustls # will use rustls
    
    cargo build --no-default-features --features with_tls,with_https,with_nativetls_vendored # will use nativetls_vendored
    

    When using rustls or nativetls_vendored, we can compile dog using musl:

    cargo build --target x86_64-unknown-linux-musl --no-default-features --features with_tls,with_https,with_nativetls_vendored
    

    --features with_tls,with_rustls is supported currently, but maybe we should not support this combination at the moment, because of https://github.com/ctz/rustls/issues/281 https://github.com/briansmith/webpki/issues/54 https://github.com/ctz/rustls/issues/184 This means for this to work you'd have to use a valid dns name as a dns server:

    $ cargo run --no-default-features --features with_tls,with_rustls -- github.com -S @one.one.one.one
    A github.com. 47s   140.82.121.4
    

    With an ip address for dns server:

    $ cargo run --no-default-features --features with_tls,with_rustls -- github.com -S @1.1.1.1
    Error [tls]: InvalidDNSNameError
    

    But it works with nativetls:

    $ cargo run --no-default-features --features with_tls,with_nativetls_vendored -- github.com -S @1.1.1.1
    A github.com. 30s   140.82.121.3
    

    DNS over HTTPS works with rustls though:

    $ cargo run --no-default-features --features with_https,with_rustls -- github.com -H @https://cloudflare-dns.com/dns-query
    A github.com. 50s   140.82.121.3
    

    --all-features is supported as per https://doc.rust-lang.org/cargo/reference/features.html#mutually-exclusive-features To not complicate builds etc.

    opened by simao 2
  • Error [protocol]: Malformed packet when querying TXT records

    Error [protocol]: Malformed packet when querying TXT records

    dog v0.1.0 Windows 10 2004

    When quering some domains for TXT records, dog only responds with Malformed packet:

    dog gp.se TXT
    Error [protocol]: Malformed packet: length 351 was specified, but read 7 bytes
    
    dog svt.se TXT
    Error [protocol]: Malformed packet: length 301 was specified, but read 237 bytes
    
    dog kungalv.se TXT
    Error [protocol]: Malformed packet: length 378 was specified, but read 172 bytes
    
    dog kungalv.se TXT @1.1.1.1
    Error [protocol]: Malformed packet: length 378 was specified, but read 172 bytes
    
    dog kungalv.se TXT @8.8.8.8
    Error [protocol]: Malformed packet: length 378 was specified, but read 172 bytes
    

    Although most other domains I've tested works fine, for example

    dog one.se TXT
    TXT one.se. 30m00s   "v=spf1 redirect=_spf.one.se"
    

    and other types of records seems to be no issue:

    dog kungalv.se MX
    MX kungalv.se.                             59m51s   10 "kungalv-se.mail.protection.outlook.com."
     A kungalv-se.mail.protection.outlook.com.     1s + 104.47.0.36
     A kungalv-se.mail.protection.outlook.com.     1s + 104.47.1.36
    
    X › duplicate 
    opened by tjoanp 2
  • Add CLI option to increase output verbosity

    Add CLI option to increase output verbosity

    This change will add a CLI option -v to increase output verbosity which can be used as an alternative to providing the DOG_DEBUG environment variable. You can specify one or more flags to increase the logging level:

    Eg.

    dog -v google.com    # Debug level
    dog -vv google.com   # Trace level
    

    The previous short flag for version was moved to -V leaving the long flag --version as-is.

    The usage looks like this:

      -V, --version            Print version information
      -v                       Increase verbosity by adding multiple (-vv)
    

    The cli arguments will override the DOG_DEBUG environment variable.

    opened by veloxl 2
  • Separate result between nameserver

    Separate result between nameserver

    I have a python script called digs that do multiple dig on specified nameservers.

    Today I am trying dog, and I love its ability to accept multiple nameservers.

    ~
    ❯ dog example.com MX -n 1.1.1.1 -n 8.8.8.8
    MX example.com.  23h57m48s   0 ""
    MX example.com. 1d0h00m00s   0 ""
    

    However I can't point which is wich. What if dog have a separator between them if we supply multiple nameservers ?

    ~
    ❯ dog example.com MX -n 1.1.1.1 -n 8.8.8.8 -n x.x.x.x
    [1.1.1.1]
    MX example.com.  23h57m48s   0 ""
    [8.8.8.8]
    MX example.com. 1d0h00m00s   0 ""
    [x.x.x.x]
    MX example.com. 1d0h00m00s   0 ""
    

    My current workaround is to use JSON output and filter the result:

    dog on  master is 📦 v0.1.0 via 🦀 v1.48.0
    ❯ cargo r --  example.com MX -n 1.1.1.1 -n 8.8.8.8 -J |  jq .responses[0].answers[0]
        Finished dev [unoptimized + debuginfo] target(s) in 0.02s
         Running `target/debug/dog example.com MX -n 1.1.1.1 -n 8.8.8.8 -J`
    {
      "class": "IN",
      "exchange": "",
      "name": "example.com.",
      "preference": 0,
      "ttl": 86126,
      "type": "MX"
    }
    
    dog on  master is 📦 v0.1.0 via 🦀 v1.48.0
    ❯ cargo r --  example.com MX -n 1.1.1.1 -n 8.8.8.8 -J |  jq .responses[1].answers[0]
        Finished dev [unoptimized + debuginfo] target(s) in 0.03s
         Running `target/debug/dog example.com MX -n 1.1.1.1 -n 8.8.8.8 -J`
    {
      "class": "IN",
      "exchange": "",
      "name": "example.com.",
      "preference": 0,
      "ttl": 86252,
      "type": "MX"
    }
    
    opened by azzamsa 2
  • Commandline Interface on Windows 10 Problem with Output

    Commandline Interface on Windows 10 Problem with Output

    Hi,

    i download the pre-compiled Version for Windows and copy the dog.exe in c:\windows\system32 . I can start it but get a crazy output (see attached file). Is something missing oder it is a bug?

    Version v0.1.0 Operating System Windows 10

    Screenshot

    opened by AndreBX 0
  • valid TXT answer is considered invalid

    valid TXT answer is considered invalid

    Hi,

    I was told about your awesome utility and I really like it. Yesterday I noticed probably a bug, when I tried this query:

    dog 24yzjhop3iawhkuxy4b3yj36dogrbkwwz2xivaujzqzeyiwobz2a.luna.avast.com. TXT

    This query returns two TXT record, one is 53 bytes long and other exactly 255.

    The utility returns error: Error [protocol]: Malformed packet: insufficient data (latest GIT master 721440b12ef01a812abe5dc6ced69af6e221fad5) or once I got: Error [protocol]: Malformed packet: length 256 was specified, but read 257 bytes (with dog v0.1.0)

    I'm using dog on Mac OS 12.5 on Arm.

    I believe the error is associated with this piece of code:

    https://github.com/ogham/dog/blob/master/dns/src/record/txt.rs#L45

    As one of the records is exactly 255 bytes long. And there is no other piece of it. The record is persistent so you can try on your own.

    Thanks!

    opened by hanickadot 0
  • thread 'main' panicked at 'Invalid HTTPS nameserver', dns-transport/src/https.rs:55:50

    thread 'main' panicked at 'Invalid HTTPS nameserver', dns-transport/src/https.rs:55:50

    At a stable hardened Gentoo Linux I do get:

     $ RUST_BACKTRACE=full dog -H wdl1.pcfg.cache.wpscdn.com 
    thread 'main' panicked at 'Invalid HTTPS nameserver', dns-transport/src/https.rs:55:50
    stack backtrace:
       0:     0x556dec00c68e - <unknown>
       1:     0x556debfa41ac - <unknown>
       2:     0x556debfe70f7 - <unknown>
       3:     0x556dec00d3e0 - <unknown>
       4:     0x556dec00dc65 - <unknown>
       5:     0x556dec00d762 - <unknown>
       6:     0x556dec00d6d6 - <unknown>
       7:     0x556dec00d692 - <unknown>
       8:     0x556debf9e1a2 - <unknown>
       9:     0x556debfa42f0 - <unknown>
      10:     0x556debfa429b - <unknown>
      11:     0x556debf9e386 - <unknown>
      12:     0x556debfb7f47 - <unknown>
      13:     0x556debfd1364 - <unknown>
      14:     0x556debfcfffb - <unknown>
      15:     0x556debfd3533 - <unknown>
      16:     0x556debfc8979 - <unknown>
      17:     0x556dec00b6a6 - <unknown>
      18:     0x556debfcf944 - <unknown>
      19:     0x7f0b6e67e31c - __libc_start_call_main
                                   at /var/tmp/portage/sys-libs/glibc-2.34-r13/work/glibc-2.34/csu/../sysdeps/nptl/libc_start_call_main.h:58:16
      20:     0x7f0b6e67e3cc - __libc_start_main_impl
                                   at /var/tmp/portage/sys-libs/glibc-2.34-r13/work/glibc-2.34/csu/../csu/libc-start.c:392:3
      21:     0x556debfa0181 - <unknown>
      22:                0x0 - <unknown>
    Aborted
    
    opened by toralf 0
  • arm64 release

    arm64 release

    It would be great to have a pre-compiled version of dog in your GitHub releases for the arm64 architecture (Raspberry Pi, etc.) Bonus would be to add it to the Debian and Ubuntu repositories for apt installation.

    opened by mrbluecoat 1
  • Why are there large time differences between dig and dog?

    Why are there large time differences between dig and dog?

    Cross posting from here: https://github.com/cleanbrowsing/dnsperftest/issues/74

    Apologies - I wasn't able to locate an answer using google or stackoverflow.

    Why is there a large time difference caused when substituting the dig command for the dog command? Is there an overhead in dig thats bypassed in dog?

    To replicate, replace:

    ttime=`$dig +tries=1 +time=2 +stats @$pip $d |grep "Query time:" | cut -d : -f 2- | cut -d " " -f 2`
    

    with

    ttime=`$dog $d @$pip --time | grep "Ran in" | cut -c 8-15 | cut -d "m" -f 1`
    

    also add the following at the top of the file after ~line 5/6

    
    { command -v drill > /dev/null && dog=drill; } || { command -v dog > /dev/null && dog=dog; } || { echo "error: dog was not found. Please install dog."; exit 1; }
    

    As an example - here are my DNS perfs (i amended so you can see which domain its hitting)

    With DIG (DiG 9.10.6)

                         www.go  amazon  facebo  carous  www.re  wikipe  twitte  gmail.  instag  whatsa  Average 
    192.168.1.37         57 ms   49 ms   50 ms   1000 ms 55 ms   56 ms   53 ms   50 ms   50 ms   49 ms     146.90
    192.168.1.1          50 ms   50 ms   49 ms   50 ms   49 ms   50 ms   50 ms   1000 ms 58 ms   54 ms     146.00
    cloudflare           54 ms   54 ms   50 ms   49 ms   51 ms   53 ms   53 ms   52 ms   52 ms   53 ms     52.10
    level3               1000 ms 62 ms   53 ms   49 ms   51 ms   172 ms  49 ms   50 ms   50 ms   50 ms     158.60
    google               52 ms   51 ms   50 ms   49 ms   49 ms   52 ms   49 ms   51 ms   51 ms   50 ms     50.40
    quad9                50 ms   53 ms   50 ms   49 ms   53 ms   50 ms   53 ms   49 ms   51 ms   50 ms     50.80
    freenom              51 ms   51 ms   49 ms   51 ms   49 ms   50 ms   50 ms   49 ms   1000 ms 58 ms     145.80
    opendns              52 ms   49 ms   53 ms   49 ms   54 ms   53 ms   52 ms   49 ms   51 ms   50 ms     51.20
    norton               51 ms   1000 ms 56 ms   51 ms   50 ms   52 ms   52 ms   50 ms   49 ms   52 ms     146.30
    cleanbrowsing        49 ms   53 ms   55 ms   50 ms   1000 ms 57 ms   50 ms   49 ms   50 ms   49 ms     146.20
    yandex               50 ms   52 ms   52 ms   50 ms   49 ms   54 ms   49 ms   51 ms   51 ms   51 ms     50.90
    adguard              50 ms   51 ms   50 ms   53 ms   50 ms   49 ms   49 ms   49 ms   49 ms   50 ms     50.00
    neustar              51 ms   51 ms   51 ms   51 ms   51 ms   56 ms   53 ms   53 ms   51 ms   50 ms     51.80
    comodo               50 ms   54 ms   54 ms   53 ms   54 ms   53 ms   53 ms   52 ms   50 ms   49 ms     52.20
    nextdns              51 ms   51 ms   53 ms   53 ms   54 ms   53 ms   1000 ms 56 ms   49 ms   50 ms     147.00
    

    vs with DOG (Dog -v v0.1.0)

    192.168.1.37         15 ms   5 ms    6 ms    12 ms   5 ms    23 ms   7 ms    16 ms   5 ms    5 ms      9.90
    192.168.1.1          7 ms    9 ms    5 ms    5 ms    5 ms    5 ms    17 ms   7 ms    4 ms    5 ms      6.90
    ...others similar
    
    
    opened by mdav43 0
Releases(v0.1.0)
Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

William D. Jones 5 Aug 20, 2022
Low-level Rust library for implementing terminal command line interface, like in embedded systems.

Terminal CLI Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you. Example, output only

HashMismatch 48 Jul 30, 2022
A command-line shell like fish, but POSIX compatible.

A command-line shell like fish, but POSIX compatible.

Seiya Nuta 778 Sep 22, 2022
A simple command line tool for creating font palettes for engines like libtcod

palscii A simple command line tool for creating font palettes for engines like libtcod. Usage This can also be viewed by running palscii --help. palsc

Steve Troetti 2 May 2, 2022
nhdl - a command-line doujinshi downloader client built in rust!

nhdl nhdl - a command-line doujinshi downloader client built in rust! goals fast and asynchronous doujinshi downloader, supporting various doujinshi s

Lumine 2 Aug 24, 2022
Another HackerNews command-line client

Another HackerNews command-line client

Sébastien Castiel 22 Dec 12, 2021
Non-interactive nREPL client for shell scripts and command-line

nreplops-tool (nr) nreplops-tool (nr) is a non-interactive nREPL client designed to be used in shell scripts and on the command-line. Early α warning:

Matti Hänninen 3 Jul 1, 2022
A full featured, fast Command Line Argument Parser for Rust

clap Command Line Argument Parser for Rust It is a simple-to-use, efficient, and full-featured library for parsing command line arguments and subcomma

null 9.6k Sep 28, 2022
Docopt for Rust (command line argument parser).

THIS CRATE IS UNMAINTAINED This crate is unlikely to see significant future evolution. The primary reason to choose this crate for a new project is if

null 743 Sep 25, 2022
Parse command line arguments by defining a struct.

StructOpt Parse command line arguments by defining a struct. It combines clap with custom derive. Documentation Find it on Docs.rs. You can also check

Guillaume P. 2.5k Sep 19, 2022
A command line progress reporting library for Rust

indicatif Documentation A Rust library for indicating progress in command line applications to users. This currently primarily provides progress bars

Armin Ronacher 3k Sep 22, 2022
⚡️ Lightning-fast and minimal calendar command line. Written in Rust 🦀

⚡️ Lightning-fast and minimal calendar command line. It's similar to cal. Written in Rust ??

Arthur Henrique 29 Sep 26, 2022
Command-Line program that takes images and produces the copy of the image with a thin frame and palette made of the 10 most frequent colors.

paleatra v.0.0.1 Command-Line program that takes an image and produces the copy of the image with a thin frame and palette made of the 10 most frequen

Beka Modebadze 22 Jul 27, 2022
parse command-line arguments into a hashmap and vec of positional args

parse command-line arguments into a hashmap and vec of positional args This library doesn't populate custom structs, format help messages, or convert types.

James Halliday 17 Aug 11, 2022
A tactics trainer for the command line

Chess Tactics CLI Practice some chess tactics in your terminal while you wait for your code to compile. Fetches tactics from this tactics API. Built W

Marcus Buffett 25 Jul 15, 2022
Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers

Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers. It deals only with integer arithmetic. Expressions may involve mixed bases (limited to decimal, hexadecimal, octal and binary numbers). The global output format may be set to a particular radix - by default it is hex.

Deep Majumder 37 Sep 7, 2022
A small command-line application to view images from the terminal written in Rust.

A small command-line application to view images from the terminal written in Rust. It is basically the front-end of viuer

Atanas Yankov 1.8k Sep 23, 2022
belt is a command line app that can show your time from a list of selected time zones

A CLI app to show your time from a list of selected time zones, and a rust lib to parse dates in string formats that are commonly used.

Rollie Ma 11 Sep 17, 2022