Comme le dit le titre. J'ai écrit un peu pendant la pause déjeuner.
Utilise PostgreSQL pour les instances de machine virtuelle Azure.
$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
$ psql -V
psql (PostgreSQL) 9.2.23
Je voulais vraiment l'écrire en Python, mais avec la configuration actuelle du module, je devais jouer avec l'environnement. Puisqu'il s'agit d'un système de production, je l'ai abandonné et je l'ai créé avec uniquement des scripts shell (bash) et des commandes standard.
bash
#!/bin/bash
YESTERDAY=`date --date '1 day ago' "+%Y%m%d"`
SQL_FILE=/tmp/dakoku.sql
MAIL_TEXT=/tmp/mail.txt
#Instruction SQL/Créé en tmp
cat << EOL > $SQL_FILE
SELECT d.syaincd comme numéro d'employé, e.syainmei comme nom d'employé, d.torokudt comme date et heure horodatées,
CASE dakokusyubetucd
WHEN '1' THEN 'Présence'
WHEN '2' THEN 'Quitter le travail'
ELSE 'inconnue'
END comme type
FROM dakoku_table d
LEFT JOIN employee_table e ON d.syaincd = e.syaincd
WHERE dakokuymd = '$YESTERDAY'
ORDER by d.torokudt, d.syaincd;
EOL
#En-tête de courrier, etc./Créé en tmp
cat << EOL > $MAIL_TEXT
To: [email protected]
Cc: [email protected]
Subject: DAILY TIME RECORD ($YESTERDAY)
Cet e-mail est automatiquement envoyé par le système.
Nous vous informerons du journal des horodatages de présence.
EOL
#Ajouter le résultat de l'exécution SQL au corps du courrier
su - postgres -c "psql KINTAI_DB < $SQL_FILE" >> $MAIL_TEXT
#Envoyer un e-mail
/sbin/sendmail -t < $MAIL_TEXT
E-mails envoyés
Cet e-mail est automatiquement envoyé par le système.
Nous vous informerons du journal des horodatages de présence.
numéro d'employé|Nom de l'employé|Estampage de la date et de l'heure|Type
------------+--------------+-------------------------+------
539258 |Yamada Taro| 2020-07-17 07:47:05.314 |Présence
265167 |Suzuki Hanako| 2020-07-17 07:52:18.736 |Présence
329665 |Ichiro Tanaka| 2020-07-17 08:03:57.356 |Présence
Enregistrez-vous avec root crontab
et exécutez automatiquement à 0h05. Le service du personnel et des affaires générales peut vérifier l'omission de présence la veille.
C'est un code honteux, mais j'espère qu'il aide quelqu'un!
Recommended Posts