Bash dans cron ?

Bash dans cron ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 23-06-2014 à 16:34:53    

Bonjour,
 
J'ai une petite colle : j'ai un script, dans le /root d'un serveur Debian Wheezy, qui doit me copier l'adresse IP de la machine sur un serveur Windows :

#! /bin/bash
 
#recuperation de l'ancienne ip
adrip=$(grep [1-9] < /root/ip.txt)
 
#recuperation de la nouvelle ip
adrip2=ifconfig vmbr0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
 
#test de l'ip
if [ $adrip != $adrip2 ]
then
echo $adrip2 > /root/ip.txt
smbclient //<serveur>/<dossier> -A /root/.credsmb -W mondomaine -c "prompt;put ip.txt ;exit;"
fi


Avec mon .credsmb qui a le username et le password "kivabien"
A la main, mon script fonctionne, me compare bien mes IP, mets à jour, et copie sur le partage.
 
Maintenant je veux l'ajouter dans mon cron, pour qu'il s'exécute 1 fois par heure :

* */1 * * * * /bin/sh /root/monscript.sh


Et là... ça ne marche pas !


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 23-06-2014 à 16:34:53   

Reply

Marsh Posté le 23-06-2014 à 16:42:47    

:hello:  
 Entrée       Description                   Equivalent à
-----------------------------------------------------------
 #yearly     Exécuté une fois par ans         0 0 1 1 *
 #annually   (comme pour #yearly)             0 0 1 1 *
 #monthly    Exécuté une fois par mois        0 0 1 * *
 #weekly     Exécuté une fois par semaine     0 0 * * 0
 #daily      Exécuté une fois par jour        0 0 * * *
 #midnight   (comme pour #daily)              0 0 * * *
 #hourly     Exécuté toute les heures         0 * * * *
===========================================================

Reply

Marsh Posté le 23-06-2014 à 16:51:08    

Non mais pour le cron, j'ai fait à l'arraché :o
Il s'exécute bien comme "il faut", toutes les heures, je le voie passer dans /var/log/syslog.


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 23-06-2014 à 18:48:53    

salut,
 
le PATH de cron est très restreint. :(
 
=> adapte le PATH (dans ton script) pour y intégrer celui de chaque commande.
par exemple :

Code :
  1. export PATH=$PATH:/usr/bin:/sbin

Reply

Marsh Posté le 24-06-2014 à 08:56:02    

Banco c'était ça !
 
Ce qui donne en code complet :

Code :
  1. #! /bin/bash
  2. export PATH=$PATH:/usr/bin:/sbin
  3. #recuperation de l'ancienne ip
  4. adrip=$(grep [1-9] < /root/ip.txt)
  5. #recuperation de la nouvelle ip
  6. adrip2=ifconfig vmbr0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
  7. #test de l'ip
  8. if [ $adrip != $adrip2 ]
  9. then
  10. echo $adrip2 > /root/ip.txt
  11. smbclient //<serveur>/<dossier> -A /root/.credsmb -W mondomaine -c "prompt;put ip.txt ;exit;"
  12. fi


Avec en invocation dans le cron comme indiqué au début par /bin/sh /root/monscript.sh. Pour ne pas trop m'enquiquiner, je le met à minuit chaque jour, mais il peut être mis simplement au release (à calculer) et au reboot du serveur.


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
Reply

Marsh Posté le 24-06-2014 à 17:26:32    

Si tu appelles ton script avec `sh`, alors il sera exécuté avec ce vers quoi pointe `/bin/sh` (peut-être `bash`, peut-être `dash`, ou autre chose encore).
À quoi sert, alors, le ashbang (`#!/bin/bash`) au début du script ?
 
Il faut rendre le script exécutable, et l'appeler par son `/chemin/nom`.

Reply

Sujets relatifs:

Leave a Replay

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