[postgresql] psql, cron, password

psql, cron, password [postgresql] - Linux et OS Alternatifs

Marsh Posté le 11-12-2003 à 09:13:03    

Salut,
je doit lancer une fonction a 11h30 du lundi au vendredi inclus.
dans /etc/cron.d/sql j'ai mis ca :  
 

Code :
  1. 30 11 * * 1-5 /usr/bin/psql -h 192.168.0.5 -U benoit -d data -c 'fc_com();' -o /var/log/sql_com.log  &&


 
 
Est ce correct ?
 
mon probleme est que psql va demander un mot de passe, comment puis je faire pour lui passer sans etre devant le clavier ? (pas trouver dans man psql...)
 
merci d avance

Reply

Marsh Posté le 11-12-2003 à 09:13:03   

Reply

Marsh Posté le 11-12-2003 à 09:26:33    

Regarde du coter d expect pour le password.
Ca te permet de passer des params à des invites diverses ...
 
A+

Reply

Marsh Posté le 11-12-2003 à 13:02:18    

Une autre solution est d'utiliser la variable d'environnement PGPASSWORD : par exemple, créer un fichier ~/.psql-secret (avec un chmod 600 ~/.psql-secret)


export PGUSER=benoit
export PGHOST=192.168.0.5
export PGPORT=5432
export PGDATABASE=data
export PGPASSWORD=mdp_en_clair


 
 Puis un script (~/sql_com.sh , avec un chmod +x ~/sql_com.sh):


#!/bin/sh
[ -f $HOME/.psql-secret ] && source $HOME/.psql-secret
 
/usr/bin/psql -c 'fc_com();' -o /var/log/sql_com.log
 
unset PGPASSWORD


 
Et lancer ce script par cron.

Code :
  1. 30 11 * * 1-5 /path/to/sql_com.sh > /dev/null


 
 Note : Ça peut poser un problème de sécurité dans le sens où certaines versions de "ps" (selon l'OS utilisé) peuvent afficher toutes les variables d'environnement d'un processus, même si l'utilisateur n'est pas le propriétaire du processus (donc ça signifie que n'importe qui loggué sur la machine pourrait visualiser la variable PGPASSWORD). Ça ne sera bien sûr possible que pendant l'exécution du script. En tout cas, c'est à vérifier.
 Bon, avec procps 2.0.16 sur un Linux 2.4.23, ça marche comme il faut (c'est à dire que seules les variables de l'utilisateur qui lance "ps" sont affichées).


Message édité par unk00 le 11-12-2003 à 13:06:30
Reply

Marsh Posté le 11-12-2003 à 14:12:11    

merci beaucoup :)))  
je teste ca des que ma fonction est finie :/
(d ailleur c'est plus 'select fc_comm();'  )
au niveau secu j utilise une woody +2.4.18 et je sais pas :D  
je vais aussi regarder rapidement expect mais la solution de unk00 ainsi presentée m'a l'air for simple à mettre en ouevre ;)

Reply

Marsh Posté le 11-12-2003 à 16:34:30    

dans pg_hba.conf (ou un truc comme ca), tu peux faire un peu mieux. Du genre, créer un user specifique aux traitements sur pgsl, mettre ident comme niveau de securite et lancer ta tache sous cette user. Si tu as une deb, inspire toi de la conf du user postgres qui sert à la maintenance de la base


---------------
Two thousand years of misery, of torture in my name, hypocrisy made paramount, paranoia the law, my name is called religion, sadistic, sacred whore.
Reply

Marsh Posté le 11-12-2003 à 16:37:57    

oui c'est ce que j etais en train de voir aussi ;)
mais la je v au plus vite ;) parceque plein de choses ...

Reply

Marsh Posté le 11-12-2003 à 21:18:06    

Pour expect tu regarde dans /usr/share/doc/expect/examples
Y a pas mal d exemple ...
 
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed