Wie der Titel schon sagt. Ich habe in der Mittagspause ein wenig geschrieben.
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
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