PingMe is a CLI tool which provides the ability to send messages or alerts to multiple messaging platforms & email.


PingMe CLI

Release Go Report Card Build GitHub issues License Go Version Go Dev Reference

AboutDocumentationSupported ServicesInstallGithub ActionConfigurationContributingShow Your Support


About

PingMe is a personal project to satisfy my needs of having alerts, most major platforms have integration to send alerts but its not always useful, either you are stuck with one particular platform, or you have to do alot of integrations. I needed a small app which i can just call from my backup scripts, cron jobs, CI/CD pipelines or from anywhere to send a message with particular information. And i can ship it everywhere with ease. Hence, the birth of PingMe.

Everything is configurable via environment variables, and you can simply export the logs or messages to a variable which will be sent as message. And most of all this serves as a swiss army knife sort of tool which supports multiple platforms.

Supported services

  • Discord
  • Email
  • Microsoft Teams
  • RocketChat
  • Slack
  • Telegram
  • Pushover
  • Mattermost

Install

Linux & MacOs

brew install kha7iq/tap/pingme

Go Get

go get -u github.com/kha7iq/pingme

Windows

scoop bucket add pingme https://github.com/kha7iq/scoop-bucket.git
scoop install pingme

Alternatively you can head over to release pages and download the binary for windows & all other supported platforms.

Docker

Docker container is also available on both dockerhub and github container registry.

latest tage will always pull the latest version avaialbe, you can also download specific version. Checkout release page for available versions.

Docker Registry

docker pull khaliq/pingme:latest

Gighub Registry

docker pull ghcr.io/kha7iq/pingme:latest

Run

docker run ghcr.io/kha7iq/pingme:latest

Github Action

A github action is also available now for this app, you can find it on Github Market Place or from this repository on github.

Usage examples for workflow are available in the repo.

Usage

❯ pingme

NAME:
   PingMe - Send message to multiple platforms

USAGE:
   main [global options] command [command options] [arguments...]

DESCRIPTION:
   PingMe is a CLI tool which provides the ability to send messages or alerts to multiple
   messaging platforms and also email, everything is configurable via environment
   variables and command line switches.Currently supported platforms include Slack, Telegram,
   RocketChat, Discord, Pushover, Mattermost, Microsoft Teams and email address.

COMMANDS:
   telegram    Send message to telegram
   rocketchat  Send message to rocketchat
   slack       Send message to slack
   discord     Send message to discord
   teams       Send message to microsoft teams
   pushover    Send message to pushover
   email       Send an email
   mattermost  Send message to mattermost
   help, h     Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h  show help (default: false)

Check Documentation Page for more details.

Configuration

All the flags have corresponding environment variables associated with it. You can either provide the value with flags or export to a variable.

View the Documentation Page for more details.

Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page. You can also take a look at the contributing guide.

Show your support

Give a ⭐️ if you like this project!

Comments
  • feat(service): add support for whatsapp

    feat(service): add support for whatsapp

    Adding Whatsapp will be absolutely awesome.

    Describe the solution you'd like

    Based on the Notify service would it be possible to do this without huge work? https://github.com/nikoksr/notify/tree/main/service/whatsapp

  • Make Dockerfile to build from source

    Make Dockerfile to build from source

    The current Dockerfile just copies the binary built outside of Docker to the image. It's not a source build (which is the most common use).

    An official, built-in Dockerfile which allows to build a Docker image directly from source would be more useful. Case in point: I wanted to test @ahdekkers' PR #65 and since building is quite an involved process for me and my Golang host OS' packages are outdated, I looked for a Dockerfile to build an image and attempted to build directly from the PR:

    docker build --force-rm -t pingme github.com/kha7iq/pingme#pull/65/head
    

    Unfortunately, since it's not a source build and it expects the binary to be built outside of the Docker workflow, it didn't work for me.

    Potential use-cases for a source build Dockerfile:

    • Running: With a proper Dockerfile, you could just issue a docker build -t pingme github.com/kha7iq/pingme#master to locally build a Docker image ready to run with a simple docker run. No build tools needed, no packaging, not even cloning the repo! And it would be straight from source (any desired branch or tag).
    • Development: You can start hacking right away with just Docker installed without needing any further toolchain on your system, since the only thing needed to test your code is docker build ....
    • Distribution: You can use the same workflow which works locally to build the images and push them to Docker Hub (even for other architectures) with a simple Github Action. Thus, you'll have a public Docker image with the latest code on HEAD (aka. daily builds).
    • Documentation: since the Dockerfile should install all required build tools, libraries and other packages and would require also to run all the required build commands, it would serve as reference to the build process.
  • Support for carriage return \n

    Support for carriage return \n

    Is your feature request related to a problem? Please describe.

    I was not able to send a msg (for instance via teams) with carriage return in it (\n Linux). Is there a way to achieve it?

    Describe the solution you'd like

    Sending a msg in form of: pingme teams -w TOKEN --msg "Hi, I got a**\n** carriage return. Nice!"

    Describe alternatives you've considered

    Over ways to pass it will be totally acceptable

    Additional context

    PingMe version 0.2.4 NAME="Linux Mint" VERSION="20.2 (Uma)" ID=linuxmint ID_LIKE=ubuntu

    A great thank you for you're implementation of nikoksr/notify!

  • Can't send email without password

    Can't send email without password

    Describe the bug

    2021/08/03 11:44:41 failed to send mail: smtp: server doesn't support AUTH: send notification To Reproduce

    Steps to reproduce the behavior:

    1. send email without (empty) password
    • OS: Ubuntu
    • Version 0.2.3
  • Debian package warning: missing 'maintainer' field

    Debian package warning: missing 'maintainer' field

    Description After installing pingme on Ubuntu Bionic via Debian package from the release page, now a dpkg message appears after each dpkginstallation:

    dpkg: warning: analyzing /var/lib/dpkg/status near line 54890 package "pingme":
    missing maintainer
    

    Note: message is not meant to be literal, but a translation from my system's locale to English. Additionally, removing package makes error message to go away.

    To Reproduce

    1. Install pingme from Debian package.
    2. Perform any subsequent apt install (package upgrades, too).
    3. Error is printed.

    Expected behavior No warning.

    Desktop (please complete the following information):

    • OS: Ubuntu Bionic
    • Version: 18.04.6
  • feat(service): add support for matrix server

    feat(service): add support for matrix server

  • Linux snap package

    Linux snap package

    I propose another popular way to create a Linux package for pingme aka snap package (https://snapcraft.io) Also, I think you have to create a developer account in snapcraft and upload pingme.

  • API support

    API support

    Describe the solution you'd like An API option to contact other services like a SMS provider

    Additional context Ensure with have all options needed to pass to the API

  • add support for matrix server

    add support for matrix server

    Description

    Added matrix service

    Fixes #61

    Type of change

    Please delete options that are not relevant.

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [x] This change requires a documentation update

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

    • [ ] Running existing tests
    • [ ] Created new tests

    Checklist:

    • [x] My code has been linted (make lint)
    • [x] I have performed a self-review of my own code
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [ ] I have added tests that prove my fix is effective or that my feature works
    • [x] New and existing unit tests pass locally with my changes
    • [x] I have rebased my branch to include the latest changes from master
  • chore(tests): add tests for mastodon service

    chore(tests): add tests for mastodon service

    Description

    Add tests to mastodon

    Type of change

    Please delete options that are not relevant.

    • [x] New feature (non-breaking change which adds functionality)

    How Has This Been Tested?

    Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

    • [x] Created new tests

    Checklist

    • [x] My code has been linted (make lint)
    • [x] I have performed a self-review of my own code
    • [x] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [x] I have added tests that prove my fix is effective or that my feature works
    • [x] New and existing unit tests pass locally with my changes
    • [x] I have rebased my branch to include the latest changes from master
  • trouble to create slack token

    trouble to create slack token

    in https://pingme.lmno.pk/#/services?id=slack I know I need a "token" and a channel id to send message via pingme to slack. the channel id iseasy to find URL ( click any of your channels , and get this URL https://app.slack.com/client/{ team_id} /{ channel_id } , is that correct ? ) but how to create a token ? I try to create a token in apps but which is the token pingme need ?? I try all these values in pingme , but always return

    chc@hq39:~$ pingme slack -t "xxxxxxx758.373xxxxxxxx" --channel "D*****P32" --msg "test"
    2022/06/29 15:10:53 failed to send message to Slack channel '' at time '': invalid_auth: send notification
    chc@hq39:~$
    

    is there any instructions to guide to create a valid token and get the channel id in slack for pingme ??

GitHub CLI extension to clone (or update) all repositories in an Organization, with the ability to filter via search queries.

gh-org-repo-sync GitHub CLI extension to clone all repositories in an Organization, with the ability to filter via search queries. If a local clone al

Nov 2, 2022
tfacon is a CLI tool for connecting Test Management Platforms and Test Failure Analysis Classifier.

Test Failure Classifier Connector Description tfacon is a CLI tool for connecting Test Management Platforms and Test Failure Analysis Classifier. Test

Jun 23, 2022
Nebula Diagnosis CLI Tool is an information diagnosis cli tool for the nebula service and the node to which the service belongs.

Nebula Diagnosis CLI Tool is an information diagnosis cli tool for the nebula service and the node to which the service belongs.

Jan 12, 2022
K-Mesh is an experimental Knative distribution which provides a fresh, CLI-focused, holistic user experience of running and managing Knative.

K-Mesh is an experimental Knative distribution which provides a fresh, CLI-focused, holistic user experience of running and managing Knative. N

Feb 14, 2022
A simple way of sending messages from the CLI output to your Discord channel with webhook.
A simple way of sending messages from the CLI output to your Discord channel with webhook.

discat A simple way of sending messages from the CLI output to your Discord channel with webhook. Actually, this is a fork version of slackcat that I

Nov 15, 2022
CLI for publishing/receiving CloudEvent messages through NATS

cenats CLI for publishing/receiving CloudEvent messages through NATS Use Case cenats is designed to make testing services that generate or consume eve

Nov 5, 2021
git-xargs is a command-line tool (CLI) for making updates across multiple Github repositories with a single command.
git-xargs is a command-line tool (CLI) for making updates across multiple Github repositories with a single command.

Table of contents Introduction Reference Contributing Introduction Overview git-xargs is a command-line tool (CLI) for making updates across multiple

Dec 31, 2022
CLI tool for manipulating GitHub Labels across multiple repositories

takolabel Installation Mac $ brew install tommy6073/tap/takolabel Other platforms Download from Releases page in this repository. Usage Set variables

Nov 3, 2022
Minutes is a CLI tool for synchronizing work logs between multiple time trackers, invoicing, and bookkeeping software to make entrepreneurs' daily work easier.
Minutes is a CLI tool for synchronizing work logs between multiple time trackers, invoicing, and bookkeeping software to make entrepreneurs' daily work easier.

Minutes is a CLI tool for synchronizing work logs between multiple time trackers, invoicing, and bookkeeping software to make entrepreneurs' daily work easier.

Aug 8, 2022
git-xargs is a command-line tool (CLI) for making updates across multiple GitHub repositories with a single command
git-xargs is a command-line tool (CLI) for making updates across multiple GitHub repositories with a single command

git-xargs is a command-line tool (CLI) for making updates across multiple GitHub repositories with a single command. You give git-xargs:

Feb 5, 2022
Scrappy is a cli tool that allows multiple web scrappers to monitor periodically for a basic ruleset coverage and inform users when the criteria have been met.

Scrappy - A multi-type web scrapper with alerting Scrappy is a cli tool that allows multiple web scrappers to monitor periodically for a basic ruleset

Nov 7, 2021
News-parser-cli - Simple CLI which allows you to receive news depending on the parameters passed to it
News-parser-cli - Simple CLI which allows you to receive news depending on the parameters passed to it

news-parser-cli Simple CLI which allows you to receive news depending on the par

Jan 4, 2022
A CLI tool which loads data from yaml files into the Google Cloud Spanner tables

splanter A CLI tool which loads data from yaml files into the Google Cloud Spanner tables (mainly for the development).

Oct 27, 2022
ntest is a cross-platform cli app that runs multiple tests against any address.
ntest is a cross-platform cli app that runs multiple tests against any address.

ntest ntest is a cross-platform cli app that runs multiple tests against any address. About ntest Having the ability to run common tests against any d

Jan 3, 2022
Symfony-cli - The Symfony CLI tool For Golang

Symfony CLI Install To install Symfony CLI, please download the appropriate vers

Dec 28, 2022
bcrypt-cli is the CLI tool for hashing passwords with bcrypt.

bcrypt-cli bcrypt-cli is the CLI tool for hashing passwords with bcrypt. Install go install github.com/ryicoh/bcrypt-cli Usage It can be used like bas

Jan 9, 2023
GTDF-CLI - The official CLI tool to operate with Getting Things Done Framework
GTDF-CLI - The official CLI tool to operate with Getting Things Done Framework

This is the official CLI tool to operate with Getting Things Done Framework. How

Feb 14, 2022
Stack Up is a simple deployment tool that performs given set of commands on multiple hosts in parallel.
Stack Up is a simple deployment tool that performs given set of commands on multiple hosts in parallel.

Stack Up is a simple deployment tool that performs given set of commands on multiple hosts in parallel. It reads Supfile, a YAML configuration file, which defines networks (groups of hosts), commands and targets.

Jan 1, 2023
Rem is a CLI trash which makes it ridiculously easy to recover files.
Rem is a CLI trash which makes it ridiculously easy to recover files.

Rem is a CLI trash which makes it ridiculously easy to recover files. We've all had that moment when we've deleted something we realised we shouldn't have. It sucks. Let's fix that!

Dec 21, 2022