# Ejemplos
Hay un millón de formas de usar ntfy, pero aquí hay algunas inspiraciones. Trato de coleccionar ejemplos en GitHub, así que asegúrese de comprobar
los que están fuera, también.
!!! información
Muchos de estos ejemplos fueron aportados por usuarios de ntfy. Si tiene otros ejemplos de cómo usa ntfy, por favor
[Crear una solicitud de extracción](https://github.com/binwiederhier/ntfy/pulls), y felizmente lo incluiré. También tenga en cuenta que
No puedo garantizar que todos estos ejemplos sean funcionales. Muchos de ellos no los he probado yo mismo.
## Cronjobs
ntfy es perfecto para cualquier tipo de cronjobs o justo cuando se realizan procesos largos (copias de seguridad, pipelines, comandos de copia rsync, ...).
Comencé a agregar notificaciones en casi todos mis scripts. Por lo general, solo encadeno el rizo llamar
directamente al comando que estoy ejecutando. El siguiente ejemplo enviará La copia de seguridad de la computadora portátil se realizó correctamente
o ⚠️ Error en la copia de seguridad de la computadora portátil directamente a mi teléfono:
rsync -a root@laptop /backups/laptop \
&& zfs snapshot ... \
&& curl -H prio:low -d "Laptop backup succeeded" ntfy.sh/backups \
|| curl -H tags:warning -H prio:high -d "Laptop backup failed" ntfy.sh/backups
Aquí hay uno para los libros de historia. Quiero desesperadamente el `github.com/ntfy` organización, pero todas mis entradas con
GitHub ha estado desesperado. En caso de que alguna vez esté disponible, quiero saberlo de inmediato.
```cron
# Check github/ntfy user
*/6 * * * * if curl -s https://api.github.com/users/ntfy | grep "Not Found"; then curl -d "github.com/ntfy is available" -H "Tags: tada" -H "Prio: high" ntfy.sh/my-alerts; fi
```
## Alertas de poco espacio en disco
Aquí hay un cronjob simple que uso para avisarme cuando el espacio en disco en el disco raíz se está agotando. Es simple, pero
eficaz.
```bash
#!/bin/bash
mingigs=10
avail=$(df | awk '$6 == "/" && $4 < '$mingigs' * 1024*1024 { print $4/1024/1024 }')
topicurl=https://ntfy.sh/mytopic
if [ -n "$avail" ]; then
curl \
-d "Only $avail GB available on the root disk. Better clean that up." \
-H "Title: Low disk space alert on $(hostname)" \
-H "Priority: high" \
-H "Tags: warning,cd" \
$topicurl
fi
```
## Alertas de inicio de sesión SSH
Hace años mi servidor doméstico fue allanado. Eso me sacudió con fuerza, así que cada vez que alguien inicia sesión en cualquier máquina que yo
Propio, ahora me envío un mensaje. Aquí hay un ejemplo de cómo usar PAM
para notificarse a sí mismo en el inicio de sesión SSH.
\=== "/etc/pam.d/sshd"
` # at the end of the file
session optional pam_exec.so /usr/bin/ntfy-ssh-login.sh
`
\=== "/usr/bin/ntfy-ssh-login.sh"
` bash #!/bin/bash
if [ "${PAM_TYPE}" = "open_session" ]; then
curl \ -H prio:high \ -H tags:warning \ -d "SSH login: ${PAM_USER} from ${PAM_RHOST}" \
ntfy.sh/alerts
fi
`
## Recopilar datos de varias máquinas
El otro día estaba ejecutando tareas en 20 servidores, y quería recopilar los resultados provisionales.
como csv en un solo lugar. Cada uno de los servidores se publicaba en un tema a medida que se completaban los resultados (`publish-result.sh`),
y tenía un colector central para obtener los resultados a medida que entraban (`collect-results.sh`).
Se veía algo como esto:
\=== "collect-results.sh"
` bash
while read result; do [ -n "$result" ] && echo "$result" >> results.csv
done < <(stdbuf -i0 -o0 curl -s ntfy.sh/results/raw)
`
\=== "publish-result.sh"
'''bash
Este script se ejecutó en cada uno de los 20 servidores. Estaba haciendo un procesamiento pesado ...
// Publish script results
curl -d "$(hostname),$count,$time" ntfy.sh/results
```
## Ansible, Sal y Títere
Puede integrar fácilmente ntfy en Ansible, Salt o Puppet para notificarle cuando se realizan o se realizan carreras.
Uno de mis compañeros de trabajo utiliza la siguiente tarea de Ansible para hacerle saber cuándo se hacen las cosas:
```yml
- name: Send ntfy.sh update
uri:
url: "https://ntfy.sh/{{ ntfy_channel }}"
method: POST
body: "{{ inventory_hostname }} reseeding complete"
```
## Atalaya (shoutrrr)
Puedes usar [gritarrr](https://github.com/containrrr/shoutrrr) Soporte genérico de webhook para enviar
[Atalaya](https://github.com/containrrr/watchtower/) notificaciones a su tema ntfy.
Ejemplo docker-compose.yml:
```yml
services:
watchtower:
image: containrrr/watchtower
environment:
- WATCHTOWER_NOTIFICATIONS=shoutrrr
- WATCHTOWER_NOTIFICATION_URL=generic+https://ntfy.sh/my_watchtower_topic?title=WatchtowerUpdates
```
O, si solo desea enviar notificaciones usando shoutrrr:
shoutrrr send -u "generic+https://ntfy.sh/my_watchtower_topic?title=WatchtowerUpdates" -m "testMessage"
## Sonarr, Radarr, Lidarr, Readarr, Prowlarr, SABnzbd
Es posible usar scripts personalizados para todos los servicios \*arr, además de SABnzbd. Notificaciones para descargas, advertencias, agarres, etc.
Algunos scripts bash simples para lograr esto se proporcionan amablemente en [Repositorio de nickexyz](https://github.com/nickexyz/ntfy-shellscripts).
## Nodo-ROJO
Puede utilizar el nodo de solicitud HTTP para enviar mensajes con [Nodo-ROJO](https://nodered.org), algunos ejemplos:
Example: Send a message (click to expand)
```json
[
{
"id": "c956e688cc74ad8e",
"type": "http request",
"z": "fabdd7a3.4045a",
"name": "ntfy.sh",
"method": "POST",
"ret": "txt",
"paytoqs": "ignore",
"url": "https://ntfy.sh/mytopic",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"senderr": false,
"credentials":
{
"user": "",
"password": ""
},
"x": 590,
"y": 3160,
"wires":
[
[]
]
},
{
"id": "32ee1eade51fae50",
"type": "function",
"z": "fabdd7a3.4045a",
"name": "data",
"func": "msg.payload = \"Something happened\";\nmsg.headers = {};\nmsg.headers['tags'] = 'house';\nmsg.headers['X-Title'] = 'Home Assistant';\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 470,
"y": 3160,
"wires":
[
[
"c956e688cc74ad8e"
]
]
},
{
"id": "b287e59cd2311815",
"type": "inject",
"z": "fabdd7a3.4045a",
"name": "Manual start",
"props":
[
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "20",
"topic": "",
"payload": "",
"payloadType": "date",
"x": 330,
"y": 3160,
"wires":
[
[
"32ee1eade51fae50"
]
]
}
]
```
Example: Send a picture (click to expand)
```json
[
{
"id": "d135a13eadeb9d6d",
"type": "http request",
"z": "fabdd7a3.4045a",
"name": "Download image",
"method": "GET",
"ret": "bin",
"paytoqs": "ignore",
"url": "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"senderr": false,
"credentials":
{
"user": "",
"password": ""
},
"x": 490,
"y": 3320,
"wires":
[
[
"6e75bc41d2ec4a03"
]
]
},
{
"id": "6e75bc41d2ec4a03",
"type": "function",
"z": "fabdd7a3.4045a",
"name": "data",
"func": "msg.payload = msg.payload;\nmsg.headers = {};\nmsg.headers['tags'] = 'house';\nmsg.headers['X-Title'] = 'Home Assistant - Picture';\n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 650,
"y": 3320,
"wires":
[
[
"eb160615b6ceda98"
]
]
},
{
"id": "eb160615b6ceda98",
"type": "http request",
"z": "fabdd7a3.4045a",
"name": "ntfy.sh",
"method": "PUT",
"ret": "bin",
"paytoqs": "ignore",
"url": "https://ntfy.sh/mytopic",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"senderr": false,
"credentials":
{
"user": "",
"password": ""
},
"x": 770,
"y": 3320,
"wires":
[
[]
]
},
{
"id": "5b8dbf15c8a7a3a5",
"type": "inject",
"z": "fabdd7a3.4045a",
"name": "Manual start",
"props":
[
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": "20",
"topic": "",
"payload": "",
"payloadType": "date",
"x": 310,
"y": 3320,
"wires":
[
[
"d135a13eadeb9d6d"
]
]
}
]
```