[LINUX] Ein Shell-Skript, das nur das Ergebnis der SQL-Ausführung per E-Mail sendet

Wie der Titel schon sagt. Ich habe in der Mittagspause ein wenig geschrieben.

Umgebung

Verwendet PostgreSQL für Azure VM-Instanzen.

$ cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)

$ psql -V
psql (PostgreSQL) 9.2.23

Code

Ich wollte es wirklich in Python schreiben, aber mit der aktuellen Modulkonfiguration musste ich mit der Umgebung spielen. Da es sich um ein Produktionssystem handelt, habe ich es aufgegeben und nur mit Shell-Skripten (Bash) und Standardbefehlen erstellt.

bash


#!/bin/bash
YESTERDAY=`date --date '1 day ago' "+%Y%m%d"`
SQL_FILE=/tmp/dakoku.sql
MAIL_TEXT=/tmp/mail.txt

#SQL-Anweisung/Erstellt in tmp
cat << EOL > $SQL_FILE
SELECT d.syaincd als Mitarbeiternummer, e.syainmei als Mitarbeitername, d.Torokudt als gestempeltes Datum und Uhrzeit,
CASE dakokusyubetucd
  WHEN '1' THEN 'Teilnahme'
  WHEN '2' THEN 'Die Arbeit verlassen'
  ELSE 'Unbekannt'
ENDE als Typ
FROM dakoku_table d
LEFT JOIN employee_table e ON d.syaincd = e.syaincd
WHERE dakokuymd = '$YESTERDAY'
ORDER by d.torokudt, d.syaincd;
EOL

#Mail-Header etc./Erstellt in tmp
cat << EOL > $MAIL_TEXT
To: [email protected]
Cc: [email protected]
Subject: DAILY TIME RECORD ($YESTERDAY)

Diese E-Mail wird automatisch vom System gesendet.
Wir werden Sie über das Anwesenheitszeitstempelprotokoll informieren.

EOL

#Fügen Sie dem E-Mail-Text das SQL-Ausführungsergebnis hinzu
su - postgres -c "psql KINTAI_DB < $SQL_FILE" >> $MAIL_TEXT

#Eine E-Mail senden
/sbin/sendmail -t < $MAIL_TEXT

E-Mails gesendet


Diese E-Mail wird automatisch vom System gesendet.
Wir werden Sie über das Anwesenheitszeitstempelprotokoll informieren.

Mitarbeiternummer|Mitarbeitername|Datum und Uhrzeit stempeln|Art
------------+--------------+-------------------------+------
     539258 |Yamada Taro| 2020-07-17 07:47:05.314 |Teilnahme
     265167 |Suzuki Hanako| 2020-07-17 07:52:18.736 |Teilnahme
     329665 |Ichiro Tanaka| 2020-07-17 08:03:57.356 |Teilnahme

Registrieren Sie sich bei root crontab und führen Sie diese automatisch um 0:05 Uhr aus. Die Personal- und allgemeine Abteilung kann die Unterlassung der Teilnahme am Vortag überprüfen. Es ist ein beschämender Code, aber ich hoffe, er hilft jemandem!

Recommended Posts

Ein Shell-Skript, das nur das Ergebnis der SQL-Ausführung per E-Mail sendet
Ein Skript, das nur einen RSS-Feed erhält
Ein Shell-Programm, das eine Fibonacci-Sequenz anzeigt
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Python-Skript, das SQL-Dateien liest, BigQuery ausführt und CSV speichert
Shell-Skript zum Einfügen von Webmin in Alpine Linux
Shell-Skript, das beim Erstellen von Dateien doppelte Namen nummeriert
Greifen Sie über das Ausführungsskript mit einem relativen Pfad auf die Datei zu.
Erstellen eines Python-Skripts, das die e-Stat-API unterstützt (Version 2)
Versuchen wir es mit einem Shell-Skript
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
[Hinweis] Ein Shell-Skript, das die CPU-Auslastung eines bestimmten Prozesses in einer while-Schleife überprüft.
Ein Programm, das nur die Esc-Taste drückt und loslässt
Ein Skript, das den laufenden CloudFormation-Stapel wie ein Mannequin anzeigt
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
[sh] Das Speichern der Befehlsausführung führt zu Variablen
Shell-Skript (Linux, macOS), das das Datum der letzten Woche ausgibt
Bedingte Verzweigung aufgrund des Vorhandenseins einer Shell-Skriptdatei
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
Schreiben Sie ein Programm, das das Programm missbraucht und 100 E-Mails sendet
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
Ein Shell-Skript, um sich wieder an die pipenv-Shell zu erinnern
[Ubuntu] So führen Sie ein Shell-Skript aus
Führen Sie den Python-Interpreter im Skript aus
Verwalten Sie Protokollrotationsgenerationen mit einem Shell-Skript.
Skript, das die angegebene URL morphologisch analysiert
Erstellen eines Shell-Skripts zum Schreiben eines Tagebuchs
[Python] Ein Programm, das die Partitur rundet
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus zu lösen (Ausführungsergebnis)
Ein Artikel, der nur eine kleine HTTP-Anfrage mit dem Befehl curl versucht
In Blender ein Skript, das nur alle Objekte direkt unter einer bestimmten Gruppe verbindet
Ich habe ein Skript geschrieben, um die Schluckuhr wiederzubeleben, die bald sterben wird