Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist

Hintergrund

Bei der Arbeit werden Datenerfassung, -verarbeitung und -analyse häufig in der Linux-Umgebung des Servers verarbeitet. Überprüfen Sie mit ps am Terminal, ob der Vorgang abgeschlossen ist. Es ist jedoch schwierig, jedes Mal zu überprüfen. Ich möchte umgehend Maßnahmen ergreifen, wenn die Verarbeitung unterbrochen ist. Eine übliche Methode besteht darin, eine Nachricht per E-Mail oder SNS zu erkennen. Kommunikation in Slack ist der Mainstream an meinem Arbeitsplatz.

Zweck

POST eine Nachricht in Slack, um festzustellen, ob es fertig ist.

Annahme

Es wird davon ausgegangen, dass das Slack-Konto bereits erstellt wurde.

Umgebung

Apps & Integrationen zum POSTEN von Nachrichten an Slack

Slack scheint verschiedene [Apps & Integrations] zu haben (https://slack.com/apps). Dieses Mal werde ich die Methoden zum POSTEN von Nachrichten anhand der folgenden zwei Methoden zusammenfassen, die häufig im Internet verwendet werden. Persönlich mag ich "Incoming Web Hooks", weil es weniger erforderliche Elemente und kürzeren Code enthält.

Name Einfache Funktionen
Slack Web API Sie können verschiedene Dinge tun
Incoming WebHooks Einfaches Channel-Posting

Wie bekomme ich einen Token?

Sehr leicht. Melden Sie sich an, um das WEB zu lockern, und führen Sie die folgenden Schritte aus.

Name Erfassungsmethode
Slack Web API Create tokendrücken.
・パスワード入力後、押したところにトークンが表示される。
Incoming WebHooks Wählen Sie "In Kanal posten" und "Eingehende WebHooks-Integration hinzufügen"drücken.
・Webhook URLの横にトークンが表示される。

Versuchen Sie, die Nachricht zu veröffentlichen

Versuchen Sie, eine Nachricht mit "Shell" und "Python" zu veröffentlichen

Slack Web API Klicken Sie hier, um eine Liste der API-Methoden anzuzeigen (https://api.slack.com/methods). Dieses Mal möchte ich die Nachricht POSTEN, daher verwende ich die Methode "chat.postMessage".

Parameterliste

Die Liste der Parameter lautet hier. Die erforderlichen Elemente sind wie folgt.

Parametername Erläuterung
token Zeichen
text Zu postender Text
channel Kanal Name
Codierte ID für Direktnachrichten

Dieses Mal erstellen wir ein Beispiel mit "Token", "Text", "Kanal", "Benutzername" und "Linknamen".

※ Hinweis Wenn Sie eine Nachricht an den Kanal senden möchten, gibt es kein Problem mit "# ". Wenn Sie jedoch mit einer direkten Nachricht POSTEN möchten und "@ " verwenden, wird sie an den Slackbot gesendet. Als Lösung müssen Sie "codierte ID" angeben. Klicken Sie unter "hier](https://api.slack.com/methods/users.list/test) auf" Test Method "(Codierungs-ID) Ihrer Slack Direct Message-Liste, um die Liste anzuzeigen. Die "ID" der Antwort entspricht der "codierten ID".

Shell

#Aufbau
TOKEN='<Token erhalten>'
CHANNEL='<Kanal Name>'
USERNAME='test_username'
LINK_NAMES='1'
URL='https://slack.com/api/chat.postMessage'

# post
curl="curl -XPOST -d \"token=${TOKEN}\" \
    -d \"text=${TEXT}\" \
    -d \"channel=${CHANNEL}\" \
    -d \"username=${USERNAME}\" \
    -d \"link_names=${LINK_NAMES}\" \
    ${URL}"
eval ${curl}

Python

#Bibliotheksimport
import requests

#Aufbau
TOKEN='<Token erhalten>'
CHANNEL='<Kanal Name>'
TEXT='test'
USERNAME='test_username'
URL='https://slack.com/api/chat.postMessage'

# post
post_json = {
    'token': TOKEN,
    'text': TEXT,
    'channel': CHANNEL,
    'username': USERNAME,
    'link_names': 1
}
requests.post(URL, data = post_json)

Incoming WebHooks Beachten Sie, dass sich die POST-Methode geringfügig von der der Slack Web API unterscheidet.

Parameterliste

Die Parameter sind wie folgt. Erstellen Sie dieses Mal ein Beispiel mit "text", "username" und "link_names".

Parametername Erforderlicher Artikel Erläuterung
text Zu postender Text
username Benutzername posten
icon_url URL zum Profilbild des Beitrags
icon_emoji Piktogramme zum Einfügen in das Profilbild des Beitrags
link_names Erwähnen
channel Kanal Name
attachments AttachmentsFülle das Formular aus

Shell

#Aufbau
URL='<Token erhalten>'
TEXT='test_text'
USERNAME='test_username'
LINK_NAMES='1'

# post
curl="curl -X POST --data '{ \
    \"text\": \"${TEXT}\" \
    ,\"username\": \"${USERNAME}\" \
    ,\"link_names\" : ${LINK_NAMES}}' \
    ${URL}"
eval ${curl}

Python

#Bibliotheksimport
import requests
import json

#Aufbau
URL='<Token erhalten>'
TEXT='test'
USERNAME='test_username'

# post
post_json = {
    'text': TEXT,
    'username': USERNAME,
    'link_names': 1
}
requests.post(URL, data = json.dumps(post_json))

Andere

Referenz

Recommended Posts

Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Slack-Benachrichtigung, wenn ein bestimmtes Wort auf Twitter mit Heroku mit Python gemurmelt wird
Benachrichtigen Sie Slack, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
Was tun, wenn der Fehler RuntimeError angezeigt wird: Python wird nicht als Framework installiert, wenn Sie versuchen, matplitlib und pylab in Python 3.3 zu verwenden
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
Verwenden Sie AWS Lambda, um einen Mechanismus zu erstellen, der Slack benachrichtigt, wenn der von CloudWatch überwachte Wert in Python überschritten wird
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Führen Sie den Python-Interpreter im Skript aus
Erstellen eines Shell-Skripts zum Schreiben eines Tagebuchs
Verwendung ist und == in Python
So schreiben Sie, wenn Sie eine Zahl nach der Gruppennummer setzen möchten, die durch einen regulären Ausdruck in Python ersetzt werden soll
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
So schreiben Sie den richtigen Shebang in Perl-, Python- und Ruby-Skripten
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
Ein Shell-Skript, um sich wieder an die pipenv-Shell zu erinnern
Benachrichtigen Sie mit Notification Center, wenn die Ausführungsumgebung in Python macOS ist
python So benachrichtigen Sie automatisch per Telefon, wenn das System ausfällt
[Python] Was tun, wenn beim Importieren aus dem zu sys.path hinzugefügten Verzeichnis gegen PEP8 verstoßen wird?
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
Über den Unterschied zwischen "==" und "is" in Python
Tipps zum Schreiben werden in Python kurz abgeflacht
So benachrichtigen Sie Discord-Kanäle in Python
Starten Sie die Shell, während das Python-Skript ausgeführt wird
[Python] Wirf eine Nachricht an den Slack-Kanal
Verwenden Sie libsixel, um Sixel in Python auszugeben und das Matplotlib-Diagramm an das Terminal auszugeben.
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
[Python] Dinge, die überprüft werden müssen, wenn in Django ein Unicode-Dekodierungsfehler auftritt
Benachrichtigen Sie Slack, wenn die Switch-Verkaufsseite aktualisiert wird ~ Slack-Bot-Entwicklung mit Python ③ ~
Ich musste im Unterricht keinen Dekorateur schreiben. Danke Kontextmanager
Ich habe ein Skript erstellt, um zu überprüfen, ob an der angegebenen Position der JSON-Datei in Python Englisch eingegeben wird.
Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet
Wenn eine Datei im freigegebenen Ordner von Raspberry Pi abgelegt wird, wird der Vorgang ausgeführt.
Überlegen Sie, wann Sie mit Python3 und Scala3 in 10 Jahren gute Arbeit leisten können.
Lassen Sie uns gemeinsam die Standardeingabe / -ausgabe von bash verstehen und ein Shell-Skript schreiben.
Unterschiede im Verhalten zwischen den Operatoren append () und "+ =" beim Hinzufügen von Daten zu einer Liste in Python
Erstellt eine Python-Bibliothek, um komplexe Einschlüsse zu schreiben und auf einfach zu lesende Weise zu reduzieren
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Erstellen Sie ein Python-Skript, um zu überprüfen, ob der Link unter der angegebenen URL gültig ist
Was tun, wenn nur das Fenster angezeigt wird und im Pygame nichts angezeigt wird?
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Eine Funktionsnotiz, die nützlich ist, wenn Sie den Debugger aufrufen möchten, wenn beim Ausführen eines Python-Skripts ein Fehler auftritt.
Beachten Sie beim Initialisieren einer Liste in Python
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Schreiben Sie in Python ein logarithmisches Histogramm auf die x-Achse
[Mac] Eine supereinfache Möglichkeit, Systembefehle in Python auszuführen und die Ergebnisse auszugeben
Wenn Sie in der for-Anweisung plt.save möchten
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben