{"id":37090980,"url":"https://github.com/nnao45/pexpo","last_synced_at":"2026-01-14T11:01:40.075Z","repository":{"id":57571335,"uuid":"103007090","full_name":"nnao45/pexpo","owner":"nnao45","description":":computer: Terminal sending ping tool written in Go.","archived":false,"fork":false,"pushed_at":"2018-02-21T15:33:55.000Z","size":65014,"stargazers_count":102,"open_issues_count":1,"forks_count":11,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-20T05:13:46.172Z","etag":null,"topics":["go","golang","icmp","multi-platform","ping","tui"],"latest_commit_sha":null,"homepage":"http://qiita.com/A_Resas/items/c904ddebdd7096f1a6bc","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nnao45.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-10T05:50:21.000Z","updated_at":"2024-05-29T09:32:16.000Z","dependencies_parsed_at":"2022-09-17T15:42:16.854Z","dependency_job_id":null,"html_url":"https://github.com/nnao45/pexpo","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/nnao45/pexpo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nnao45%2Fpexpo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nnao45%2Fpexpo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nnao45%2Fpexpo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nnao45%2Fpexpo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nnao45","download_url":"https://codeload.github.com/nnao45/pexpo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nnao45%2Fpexpo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28417815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","icmp","multi-platform","ping","tui"],"created_at":"2026-01-14T11:01:39.358Z","updated_at":"2026-01-14T11:01:40.069Z","avatar_url":"https://github.com/nnao45.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://circleci.com/gh/nnao45/pexpo.svg?style=svg)](https://circleci.com/gh/nnao45/pexpo)\n[![Travis CI](https://travis-ci.org/nnao45/pexpo.svg?branch=master)](https://travis-ci.org/nnao45/pexpo)\n[![v1.41](https://img.shields.io/badge/package-v1.41-ff69b4.svg)](https://github.com/nnao45/pexpo/releases/tag/1.41)\n[![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/nnao45/pexpo/master/LICENSE)\n[![Go Report Card](https://goreportcard.com/badge/github.com/nnao45/pexpo)](https://goreportcard.com/report/github.com/nnao45/pexpo)\n[![platform](https://img.shields.io/badge/platform-win10%20|%20osx%20|%20linux-orange.svg)]()\n# pexpo\n![result](https://user-images.githubusercontent.com/17565502/30773031-041851a6-a0a3-11e7-90be-81199aa12676.png)  \npexpo is ping sending tui tool with cool clomun \u0026 logging loss-count in the multi platforms(Windows, Mac, Linux...).  \npexpo has tui engine is [termbox-go](https://github.com/nsf/termbox-go), sending ICMP engine is [go-fastping](https://github.com/tatsushid/go-fastping).  \nSo, pexpo's code is NATIVE [The Go Programming Language](http://golang.org) application. \nThis is inspired the [pinger](https://github.com/hirose31/pinger), [Exping](http://www.woodybells.com/exping.html).  \nAnd, This app use with root(sudo) privilege. Because using socket of icmp.\n  \n***Current pexpo's version: 1.41***  \n(scroll fix.)\n\n## Download\nDownload Page: https://github.com/nnao45/pexpo/releases/latest\n\n## Install\n```bash\n$ brew install nnao45/pexpo/pexpo\n```\nif you install with brew, please make ping-list, for example, following text.\n```bash\n$ cat \u003c\u003c EOT \u003e ping-list.txt\n8.8.8.8\tgoogle.com\n8.8.4.4\tgoogle.com\n208.67.220.123 OpenDNS\n216.146.35.35 Dyn Internet Guide\n216.146.36.36 Dyn Internet Guide\n77.88.8.8 Yandex.DNS\n77.88.8.1 Yandex.DNS\n77.88.8.88 Yandex.DNS\n77.88.8.2 Yandex.DNS\n77.88.8.7 Yandex.DNS\n77.88.8.3 Yandex.DNS\n180.76.76.76 Baidu DNS\n114.114.114.114 Baidu DNS\n80.80.80.80 Freenom World\n80.80.81.81 Freenom World\n8.26.56.26 Comodo Secure DNS\n8.20.247.20 Comodo Secure DNS\n106.186.17.181 OpenNIC\n106.185.41.36 OpenNIC\n2001:4860:4860::8888 www.google.com\nEOT\n```\nOkay, and run :blush:\n```bash\n$ sudo pexpo -f ping-list.txt\n```\n\n## Usage\n```bashUsage:\n    pexpo | pexpo.exe [-i interval] [-t timeout] [-f ping-list] [-A] [-H] [-S] [-V]\n\nExamples:\n    ./pexpo -i 500ms -t 1s -f /usr/local/ping-list.txt\n    pexpo.exe -i 500ms -t 1s -f C:\\Users\\arale\\Desktop\\ping-list.txt\n\nOption:\n    -i Sending ICMP interval time(Default:500ms, should not be lower this).\n       You must not use \"200\" or \"1\" or..., must use \"200ms\" or \"1s\" or ... , so use with time's unit.\n\n    -t Sending ICMP timeout time(Default:3s)\n       You must not use \"200\" or \"1\" or..., must use \"200ms\" or \"1s\" or ... , so use with time's unit.\n       this \"timeout\" is Exact meaning, fastping.NewPinger() receives OnRecv struct value interval.\n\n    -f Using Filepath of ping-list(Default:current_dir/ping-list.txt).\n\n    -A If you want to write on ping-list -- such as Cisco's show ip arp -- , \n       \"Internet  10.0.0.1                0   ca01.18cc.0038  ARPA   Ethernet2/0\",\n\t   Ignoring string \"Internet\", So It is good as you copy\u0026paste show ip arp line.\n\t   \n    -V if you DON'T want to make file \"ping-list\", should use this option.\n       this option is run \"vi\", and make tmpfile...pexpo this file as ping-list.\n\n\u003cHTTP mode options!\u003e\n\nExamples:\n    ./pexpo -H -i 500ms -t 1s -f /usr/local/curl-list.txt\n    pexpo.exe -S -i 500ms -t 1s -f C:\\Users\\arale\\Desktop\\curl-list.txt\n       (If you want to \"Request, http and https\", Using Both -H \u0026 -S.)\n\t\nOption:\n    -H This optison is like \"curl\". So you Sending HTTP(:80) GET Request instead of the PING...!\n\t   \n    -S This optison is like \"curl\". So you Sending HTTP\"S\"(:443) GET Request instead of the PING...!\n\t\n       -H or -S options HTTP/HTTPS GET Request instead of the PING.\n       (Just like, curl -LIs www.google.com -o /dev/null -w '%{http_code}\\n')\n       This Request is ververy simple GET Request, Only Getting status code(No header, No form, No getting data.)\n\n       And, if http status code is \"200\", string color is Blue, else Red.\n```\n \n## Demo (macOS 10.13.1):apple:\n![result](https://github.com/nnao45/naoGifRepo/blob/master/pexpo-mac.gif)\n \n## Demo (Ubuntu16.04):penguin:\n![result](https://github.com/nnao45/naoGifRepo/blob/master/pexpo_1.20_linux.gif)\n\n## Demo (windows10):four_leaf_clover:\n![result](https://github.com/nnao45/naoGifRepo/blob/master/pexpo_1.20_win.gif)\n\n## Demo (windows10 \u0026 HTTPING):earth_asia:\n![result](https://github.com/nnao45/naoGifRepo/blob/master/pexpo_HS_1.20_wins.gif)\n\n## Support, Running NO NEED text file mode\nBefore run main, make ping-list with \"vi\".\n```bash\n$ sudo pexpo -V\n```\nyou write, for example, following text,\n```bash\n8.8.8.8\tgoogle.com\n8.8.4.4\tgoogle.com\n216.146.35.35 Dyn Internet Guide\n216.146.36.36 Dyn Internet Guide\n180.76.76.76 Baidu DNS\n114.114.114.114 Baidu DNS\n80.80.80.80 Freenom World\n80.80.81.81 Freenom World\n8.26.56.26 Comodo Secure DNS\n8.20.247.20 Comodo Secure DNS\n106.186.17.181 OpenNIC\n106.185.41.36 OpenNIC\n2001:4860:4860::8888 www.google.co\n\n```\nokay, and push \":wq\", run the pexpo :relieved:  \n![result](https://github.com/nnao45/naoGifRepo/blob/master/pexpomanc-12月-02-2017%2016-53-22.gif)\n\n## Implementation\n- Very light, and quick application(for Sending ICMP to the too many hosts):metal:\n- ONLY one app run on multi platforms(Windows10, Mac, Linux...)!!:kissing_heart:\n- You can send ICMP or HTTP GET or HTTPS GET ipv4, and ipv6!!:open_mouth:\n- pexpo has several options. You can change ping interval, timeout, select ping-list, ,help Cisco using, \u0026 http ping mode!:octocat:\n- Display Counting Ping loss per host:point_up_2:\n- Display Current Dead host(if host is revive, and dead mark will be vanish):boom:\n- pexpo has Pausing Implementation. if you want, push \"Crtl+S\":traffic_light:\n### more...\n- Logging ping result($HOME/.pexpo/result_$DATE_.txt).\n- Check the syntax on the ping-list(# is comment out, ignoring blank line, using tab is ok, no description is ok...).\n- Push ArrowUp(Ctrl+A) or ArrowDown(Ctrl+Z) key, scroll host-list :arrow_double_up: :arrow_double_down:\n  \n## Release note\n- version 1.41...scroll fix.\n- version 1.40...new CI \u0026 fix bug.\n- version 1.39...mutex is safetilize.\n- version 1.38...pausing implement change from channel to the mutex.\n- version 1.37...context support \u0026 slim goroutine.\n- version 1.36...stable homebrew \u0026 glide.\n- version 1.34...bug fix.\n- version 1.34...typo fix.\n- version 1.33...add \"-V\"...make tmp ping-list with vi.\n- version 1.32...little bug fix \u0026 brew install support.\n- version 1.31...little bug fix \u0026 brew install support.\n- version 1.30...Scroling host-list!!!!! :fish_cake:\n- version 1.25...travis support \u0026 reading ping-list's bug fix.\n- version 1.24...go report A+!!(no implement change)\n- version 1.23...Little performance up(assign cap in the string[])\n- version 1.22...Too Little bug fix(string join -\u003e append []string)\n- version 1.21...Too Little change in code \u0026 icon+\n- version 1.20...Wow!!:heart_eyes:Adding \"HTTP PING\"!!\n  - \"-H\", http_ping \"-S\", https_ping. Using Both, Sending Both with not error.\n  - Accompanied by the http ping implementation, little change variavle, channel. There is no change in ICMP behavior.\n- version 1.10...Too little additinal change under line, There is no change in Basic behavior.\n  - Print version.\n  - Readability up(not using global variable).\n  - Add channel, \"received\"(Both directions key interrupt channels).\n  - When push Ctrl+S, change key interrupt message.\n- version 1.00...Implementated Basic functions.\n  \n***Have a nice go hacking days***:sparkles::wink:\n## Writer \u0026 License\npexpo was writed by nnao45 (WORK:Network Engineer, Twitter:@A_Resas, MAIL:n4sekai5y@gmail.com).  \nThis software is released under the MIT License, see LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnnao45%2Fpexpo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnnao45%2Fpexpo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnnao45%2Fpexpo/lists"}