{"id":16164041,"url":"https://github.com/cyclenerd/notify-me","last_synced_at":"2025-03-18T22:31:26.238Z","repository":{"id":72096275,"uuid":"423472514","full_name":"Cyclenerd/notify-me","owner":"Cyclenerd","description":"📟 CLI scripts to get notified via MS Teams, Discord, Pushover, sipgate SMS and many more...","archived":false,"fork":false,"pushed_at":"2024-06-17T18:27:08.000Z","size":574,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-17T00:34:02.624Z","etag":null,"topics":["debian","docker","docker-image","linux-shell","macos","ms-teams","perl","perl5","pushover","pushover-api","pushover-cli","pushover-notifications","sipgate","sms","sms-client","teams","ubuntu"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/cyclenerd/notify-me","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cyclenerd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Cyclenerd"}},"created_at":"2021-11-01T13:20:54.000Z","updated_at":"2024-06-17T18:27:05.000Z","dependencies_parsed_at":"2024-04-29T18:27:17.888Z","dependency_job_id":"5e8747ea-c882-434e-aa8c-6bdd0d6c3ddc","html_url":"https://github.com/Cyclenerd/notify-me","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fnotify-me","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fnotify-me/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fnotify-me/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cyclenerd%2Fnotify-me/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cyclenerd","download_url":"https://codeload.github.com/Cyclenerd/notify-me/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244318675,"owners_count":20433961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["debian","docker","docker-image","linux-shell","macos","ms-teams","perl","perl5","pushover","pushover-api","pushover-cli","pushover-notifications","sipgate","sms","sms-client","teams","ubuntu"],"created_at":"2024-10-10T02:45:02.084Z","updated_at":"2025-03-18T22:31:25.940Z","avatar_url":"https://github.com/Cyclenerd.png","language":"Perl","funding_links":["https://github.com/sponsors/Cyclenerd"],"categories":[],"sub_categories":[],"readme":"# Notify me\n\n[![Badge: Perl](https://img.shields.io/badge/Perl-%2339457E.svg?logo=perl\u0026logoColor=white)](#readme)\n[![Badge: Docker](https://img.shields.io/badge/Docker-%230db7ed.svg?logo=docker\u0026logoColor=white)](#readme)\n[![Badge: Apple](https://img.shields.io/badge/Apple-000000.svg?logo=apple\u0026logoColor=white)](#readme)\n[![Badge: Linux](https://img.shields.io/badge/Linux-FCC624.svg?logo=linux\u0026logoColor=black)](#readme)\n[![Badge: Latest image](https://github.com/Cyclenerd/notify-me/actions/workflows/docker-latest.yml/badge.svg)](https://github.com/Cyclenerd/notify-me/actions/workflows/docker-latest.yml)\n[![Badge: GitHub](https://img.shields.io/github/license/cyclenerd/notify-me)](https://github.com/Cyclenerd/notify-me/blob/master/LICENSE)\n[![Badge: Docker Pulls](https://img.shields.io/docker/pulls/cyclenerd/notify-me)](https://hub.docker.com/r/cyclenerd/notify-me)\n\nA collection of Perl scripts to notify you via Mailgun, Microsoft Teams, Pushover, Discord, sipgate SMS, GitHub and GitLab issues.\n\nAlso available as [Docker image](https://hub.docker.com/r/cyclenerd/notify-me).\n\nDocker Hub registry:\n```shell\ndocker pull cyclenerd/notify-me:latest\ndocker run cyclenerd/notify-me:latest pushover.pl --help\n```\n\n## Services supported\n\n* 📧 [Mailgun](https://github.com/Cyclenerd/notify-me#mailgun--mailgunpl)\n* 👪 [Microsoft Teams](https://github.com/Cyclenerd/notify-me#microsoft-teams--ms-teamspl)\n* 🔔 [Pushover](https://github.com/Cyclenerd/notify-me#pushover--pushoverpl)\n* 👾 [Discord](https://github.com/Cyclenerd/notify-me#discord--discordpl)\n* ☎️ [sipgate SMS](https://github.com/Cyclenerd/notify-me#sipgate-sms--sipgatepl)\n* 😽 [GitHub Issue](https://github.com/Cyclenerd/notify-me#github-issue--github-issuepl)\n* 🦊 [GitLab Issue](https://github.com/Cyclenerd/notify-me#gitlab-issue--gitlab-issuepl)\n\n## Tested\n\n* [![Ubuntu](https://github.com/Cyclenerd/notify-me/actions/workflows/ubuntu.yml/badge.svg)](https://github.com/Cyclenerd/notify-me/actions/workflows/ubuntu.yml)\n* [![macOS](https://github.com/Cyclenerd/notify-me/actions/workflows/macos.yml/badge.svg)](https://github.com/Cyclenerd/notify-me/actions/workflows/macos.yml)\n* [![Latest image](https://github.com/Cyclenerd/notify-me/actions/workflows/docker-latest.yml/badge.svg)](https://github.com/Cyclenerd/notify-me/actions/workflows/docker-latest.yml)\n\n## Requirement\n\n* Perl 5 (`perl`)\n* Perl modules:\n\t* [App::Options](https://metacpan.org/pod/App::Options)\n\t* [LWP::UserAgent](https://metacpan.org/pod/LWP::UserAgent)\n\t* [JSON::XS](https://metacpan.org/pod/JSON::XS)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDebian/Ubuntu\u003c/b\u003e\u003c/summary\u003e\n\nPackages:\n```shell\nsudo apt update \u0026\u0026 \\\nsudo apt install \\\n\tlibapp-options-perl \\\n\tlibwww-perl \\\n\tlibjson-xs-perl\n```\n\n\u003c/details\u003e\u003c!-- // Debian/Ubuntu --\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003emacOS\u003c/b\u003e\u003c/summary\u003e\n\nHomebrew packages:\n```shell\nbrew install perl\nbrew install cpanminus pkg-config\n```\n\nInstall Perl modules with cpanminus:\n```shell\ncpanm --installdeps .\n```\n\n\u003c/details\u003e\u003c!-- macOS --\u003e\n\n\n## Mailgun ( `mailgun.pl`)\n\nSend plain text message via Mailgun API:\n\u003chttps://documentation.mailgun.com/en/latest/api-sending.html#sending\u003e\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/mailgun.pl\n```\n\nRun:\n```shell\nperl mailgun.pl \\\n\t--key=\"YOUR_API_KEY\" \\\n\t--domain=\"YOUR_DOMAIN_NAME\" \\\n\t--from=\"SENDER_OF_THE_MESSAGE\" \\\n\t--to=\"RECIPIENT_OF_THE_MESSAGE\" \\\n\t--title=\"YOUR_SUBJECT\" \\\n\t--msg=\"YOUR_MESSAGE\"\n```\n\nYou can also create a `mailgun.conf` configuration file in the same directory as the `mailgun.pl` program with default values:\n\n```text\nkey = YOUR_API_KEY\ndomain = YOUR_DOMAIN_NAME\nfrom = SENDER_OF_THE_MESSAGE\nto = RECIPIENT_OF_THE_MESSAGE\ntitle = YOUR_SUBJECT\nmsg = YOUR_MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n\n## Microsoft Teams ( `ms-teams.pl`)\n\nCreate an webhook URL for your Microsoft Teams Group:\n\u003chttps://docs.microsoft.com/en-us/outlook/actionable-messages/send-via-connectors\u003e\n\nThe webhook URL should look similar to the following:\n\n```text\nhttps://outlook.office365.com/webhook/ ↩\na1269812-6d10-44b1-abc5-b84f93580ba0@ ↩\n9e7b80c7-d1eb-4b52-8582-76f921e416d9/ ↩\nIncomingWebhook/3fdd6767bae44ac58e5995547d66a4e4/ ↩ \nf332c8d9-3397-4ac5-957b-b8e3fc465a8c\n```\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/ms-teams.pl\n```\n\nRun:\n```shell\nperl ms-teams.pl \\\n\t--url=\"YOUR_WEBHOOK_URL\" \\\n\t--title=\"YOUR_OPTIONAL_TITLE\" \\\n\t--msg=\"YOUR_MESSAGE\"\n```\n\nYou can also create a `ms-teams.conf` configuration file in the same directory as the `ms-teams.pl` program with default values:\n\n```text\nurl = YOUR_WEBHOOK_URL\ntitle = YOUR_OPTIONAL_TITLE\nmsg = YOUR_MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n\n## Pushover ( `pushover.pl`)\n\nSend message via Pushover API:\n\u003chttps://pushover.net/api\u003e\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/pushover.pl\n```\n\nRun:\n```shell\nperl pushover.pl \\\n\t--user=\"USER\" \\\n\t--token=\"TOKEN\" \\\n\t--msg=\"MESSAGE\"\n```\n\nYou can also create a `pushover.conf` configuration file in the same directory as the `pushover.pl` program with default values:\n\n```text\nuser = USER\ntoken = TOKEN\nmsg = MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n\n## Discord ( `discord.pl`)\n\nDiscord webhook API:\n\u003chttps://discord.com/developers/docs/resources/webhook#execute-webhook\u003e\n\nCreate an webhook URL for your Discord channel:\n\u003chttps://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks\u003e\n\nThe webhook URL should look similar to the following:\n```text\nhttps://discord.com/api/webhooks/\u003cwebhook-id\u003e/\u003cwebhook-token\u003e\n```\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/discord.pl\n```\n\nRun:\n```shell\nperl discord.pl \\\n\t--url=\"YOUR_WEBHOOK_URL\" \\\n\t--msg=\"MESSAGE\"\n```\n\nYou can also create a `discord.conf` configuration file in the same directory as the `discord.pl` program with default values:\n\n```text\nurl = YOUR_WEBHOOK_URL\nmsg = MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n\n## sipgate SMS ( `sipgate.pl`)\n\nSend an SMS via the sipgate REST API:\n\u003chttps://www.sipgate.io/rest-api\u003e\n\n1. Order the free feature \"SMS senden\": \u003chttps://app.sipgatebasic.de/feature-store/sms-senden\u003e\n1. Get token id and token with 'sessions:sms:write' scope: \u003chttps://app.sipgate.com/personal-access-token\u003e\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/sipgate-sms.pl\n```\n\n```shell\nperl sipgate-sms.pl \\\n\t--id=\"YOUR_SIPGATE_TOKEN_ID\" \\\n\t--token=\"YOUR_SIPGATE_TOKEN\" \\\n\t--sms=\"YOUR_SIPGATE_SMS_EXTENSION_DEFAULT_S0\" \\\n\t--tel=\"RECIPIENT_PHONE_NUMBER\" \\\n\t--msg=\"YOUR_MESSAGE\"\n```\n\nYou can also create a `sipgate-sms.conf` configuration file in the same directory as the `sipgate-sms.pl` program with default values:\n\n```text\nid = YOUR_SIPGATE_TOKEN_ID\ntoken = YOUR_SIPGATE_TOKEN\nsms = YOUR_SIPGATE_SMS_EXTENSION_DEFAULT_S0\ntel = RECIPIENT_PHONE_NUMBER\nmsg = YOUR_MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\nThe token should have the `sessions:sms:write` scope.\nFor more information about personal access tokens visit \u003chttps://www.sipgate.io/rest-api/authentication#personalAccessToken\u003e.\n\nThe `smsId` uniquely identifies the extension from which you wish to send your message.\nFurther explanation is given in the section Web SMS Extensions \u003chttps://github.com/sipgate-io/sipgateio-sendsms-php#web-sms-extensions\u003e.\n\n\n## GitHub Issue ( `github-issue.pl`)\n\nCreate an GitHub issue via the GitHub REST API.\nAny user with pull access to a repository can create an issue.\n\n1. [Generate a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)\n1. Select scope:\n\t* `public_repo` : To create issues in public repositories\n\t* `repo` (Full control of private repositories ) : To create issues in private repositories\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/github-issue.pl\n```\n\n```shell\nperl github-issue.pl \\\n\t--ower=\"GITHUB_REPO_OWNER\" \\\n\t--repo=\"GITHUB_REPO\" \\\n\t--username=\"YOUR_GITHUB_USERNAME\" \\\n\t--token=\"YOUR_GITHUB_TOKEN\" \\\n\t--title=\"YOUR_TITLE\" \\\n\t--msg=\"YOUR_MESSAGE\"\n```\n\nYou can also create a `github-issue.conf` configuration file in the same directory as the `github-issue.pl` program with default values:\n\n```text\nower = GITHUB_REPO_OWNER\nrepo = GITHUB_REPO\nusername = YOUR_GITHUB_USERNAME\ntoken = YOUR_GITHUB_TOKEN\ntitle = YOUR_TITLE\nmsg = YOUR_MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n### GitHub Issue Comment ( `github-issue-comment.pl`)\n\nCreate an GitHub issue comment via the GitHub REST API.\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/github-issue-comment.pl\n```\n\n```shell\nperl github-issue.pl \\\n\t--ower=\"GITHUB_REPO_OWNER\" \\\n\t--repo=\"GITHUB_REPO\" \\\n\t--issue=\"GITHUB_ISSUE_NUMBER\" \\\n\t--username=\"YOUR_GITHUB_USERNAME\" \\\n\t--token=\"YOUR_GITHUB_TOKEN\" \\\n\t--msg=\"YOUR_MESSAGE\"\n```\n\nYou can also create a `github-issue-comment.conf` configuration file in the same directory as the `github-issue-comment.pl` program with default values:\n\n```text\nower = GITHUB_REPO_OWNER\nrepo = GITHUB_REPO\nissue = GITHUB_ISSUE_NUMBER\nusername = YOUR_GITHUB_USERNAME\ntoken = YOUR_GITHUB_TOKEN\nmsg = YOUR_MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n\n## GitLab Issue ( `gitlab-issue.pl`)\n\nCreate an GitLab issue via the GitLab REST API v4.\n\n1. [Generate a personal access token](https://gitlab.com/-/profile/personal_access_tokens?name=notify-me\u0026scopes=api) ([Help](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token))\n1. Select scope: `api`\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/gitlab-issue.pl\n```\n\n```shell\nperl gitlab-issue.pl \\\n\t--server=\"OPTIONAL_YOUR_OWN_GITLAB_SERVER\" \\\n\t--project=\"GITLAB_PROJECT_ID\" \\\n\t--token=\"YOUR_GITLAB_TOKEN\" \\\n\t--title=\"YOUR_TITLE\" \\\n\t--msg=\"YOUR_MESSAGE\"\n```\n\nYou can also create a `gitlab-issue.conf` configuration file in the same directory as the `gitlab-issue.pl` program with default values:\n\n```text\nserver = OPTIONAL_YOUR_OWN_GITLAB_SERVER\nproject = GITLAB_PROJECT_ID\ntoken = YOUR_GITLAB_TOKEN\ntitle = YOUR_TITLE\nmsg = YOUR_MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n## GitLab Issue Comment ( `gitlab-issue-comment.pl`)\n\nCreate an GitLab issue comment via the GitLab REST API v4.\n\nDownload script:\n```\ncurl -O https://raw.githubusercontent.com/Cyclenerd/notify-me/master/gitlab-issue-comment.pl\n```\n\n```shell\nperl gitlab-issue-comment.pl \\\n\t--server=\"OPTIONAL_YOUR_OWN_GITLAB_SERVER\" \\\n\t--project=\"GITLAB_PROJECT_ID\" \\\n\t--issue=\"GITLAB_ISSUE_NUMBER\" \\\n\t--token=\"YOUR_GITLAB_TOKEN\" \\\n\t--msg=\"YOUR_MESSAGE\"\n```\n\nYou can also create a `gitlab-issue-comment.conf` configuration file in the same directory as the `gitlab-issue-comment.pl` program with default values:\n\n```text\nserver = OPTIONAL_YOUR_OWN_GITLAB_SERVER\nproject = GITLAB_PROJECT_ID\nissue = GITLAB_ISSUE_NUMBER\ntoken = YOUR_GITLAB_TOKEN\nmsg = YOUR_MESSAGE\n```\n\nMore about this also in the [Configuration](#Configuration) section.\n\n\n## Configuration\n\nThe Perl module [App::Options](https://metacpan.org/pod/App::Options) is used.\nApp::Options combines command-line arguments, environment variables, option files and program defaults.\n\n### Option Files\n\nA cascading set of option files are all consulted to allow individual users to specify values that override the normal values for certain programs.\n\nFurthermore, the values for individual programs can override the values configured generally system-wide.\n\nThe resulting value for an option variable comes from the first place that it is ever seen.\nSubsequent mentions of the option variable within the same or other option files will be ignored.\n\nThe following files are consulted in order.\n\n```text\n$ENV{HOME}/.app/$app.conf\n$ENV{HOME}/.app/app.conf\n$prog_dir/$app.conf\n$prog_dir/app.conf\n$prefix/etc/app/$app.conf\n$prefix/etc/app/app.conf\n/etc/app/app.conf\n```\n\nIf the special option, `$app` is the program name without any trailing extension (i.e. \".exe\", \".pl\", etc.).\n\nThe Program Directory `$prog_dir` is the directory in which the program exists on the file system.\n\nThe Special Option `$prefix` represents the root directory of the software installation.\n\n### Environment Variables\n\nFor each variable/value pair that is to be inserted into the option,\nthe corresponding environment variables are searched to see if they are defined.\n\nThe environment always overrides an option file value.\n\nBy default, the environment variable for an option variable named `msg` would be `APP_MSG`.\n\nExample:\n```\nexport APP_MSG=\"My Teams message\"\nexport APP_TITLE=\"My Teams title\"\nperl ms-teams.pl\n```\n\n### Command Line Argument\n\nEach command line argument that begins with a \"-\" or a \"--\" is considered to be an option:\n\n```shell\n--msg=test # long option, with arg\n-msg=test  # short option, with arg\n```\n\nThe command line argument always overrides an option file value and environment variable.\n\n### Debug\n\nSpecifying the `--debug_options` option on the command line will assist in figuring out which files App::Options is looking at.\n\nExample:\n```text\n$ perl ms-teams.pl --debug_options\n1. Parsed Command Line Options. [--debug_options]\n3. Provisional prefix Set. prefix=[/home/nils/perl5/perlbrew/perls/perl-5.26.1] origin=[perl prefix]\n4. Set app variable. app=[ms-teams] origin=[program name (ms-teams.pl)]\n5. Scanning Option Files\n   Looking for Option File [/etc/app/policy.conf]\n   Looking for Option File [/home/nils/.app/ms-teams.conf]\n   Looking for Option File [/home/nils/.app/app.conf]\n   Looking for Option File [./ms-teams.conf]\n   Looking for Option File [./app.conf]\n   Looking for Option File [/home/nils/perl5/perlbrew/perls/perl-5.26.1/etc/app/ms-teams.conf]\n   Looking for Option File [/home/nils/perl5/perlbrew/perls/perl-5.26.1/etc/app/app.conf]\n   Looking for Option File [/etc/app/app.conf]\n6. Scanning for Environment Variables.\n7. prefix Made Definitive [/home/nils/perl5/perlbrew/perls/perl-5.26.1]\n8. Set Defaults.\n```\n\n## Contributing\n\nHave a patch that will benefit this project?\nAwesome! Follow these steps to have it accepted.\n\n1. Please read [how to contribute](CONTRIBUTING.md).\n1. Fork this Git repository and make your changes.\n1. Create a Pull Request.\n1. Incorporate review feedback to your changes.\n1. Accepted!\n\n\n## License\n\nAll files in this repository are under the [Apache License, Version 2.0](LICENSE) unless noted otherwise.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyclenerd%2Fnotify-me","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcyclenerd%2Fnotify-me","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcyclenerd%2Fnotify-me/lists"}