probleme de $PATH ?

Le
threepwood
Bonjour,

j'ai crée un petit script qui envoi des commandes sur un serveur distant, mais j'ai un petit soucis..

quand j'execute la commande à la main, cela fonctionne, par contre dés qu'elle est en crontab, cela ne fonctionne plus.

voici mon script:
********************************************
NARGS=1

maFunc() {
nc -w5 -z xxx.xxx.xxx.xxx 22 && {
/usr/sbin/echo $1
} || maFunc
}
maFunc
**********************

donc ce script, appellons-le "toto.sh" est appellé de la maniere suivante: "toto.sh TATA"
il teste ensuite le port 22 du serveur distant (ip remplacé par xxx) et si cela répond, envoi la commande: "echo $i"

Vu que j'ai mis un "NARGS=1" au début, cela devrait envoyer "echo TATA"
mais via la crontab, cela ne renvoi que "echo"

j'ai fouillé un peu pour trouver une explication, et à priori cela viendrait de la variable d'environnement.
j'ai donc indiqué /usr/sbin dans le $PATH puisque mon script toto.sh s'y trouve.

mais cela ne résoud rien :(

si quelqu'un avait une idée

Merci :)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
debug this fifo
Le #21392451
threepwood wrote:

/usr/sbin/echo $1



un echo dans sbin ? wtf ?
Vincent Riquer
Le #21393311
Le Wed, 17 Mar 2010 10:33:01 -0500, threepwood a écrit :
NARGS=1



C'est quoi ?

maFunc() {
nc -w5 -z xxx.xxx.xxx.xxx 22 && {
/usr/sbin/echo $1


^ on va dire que c'est une faute de frappe.

Heuuu il me semble que ce $1 est le premier argument passé à maFunc, pas
celui du script.

} || maFunc
}
maFunc



Ça marcherait sûrement mieux avec maFunc $1?

C'est en quel shell ton truc ? Tu n'as pas mis le shebang...
Nicolas George
Le #21393431
threepwood wrote in message
voici mon script:
********************************************
NARGS=1



Il manque une indication de l'interpréteur. Ce fichier ne peut pas être
exécuté par lui-même.
moi-meme
Le #21395211
Le Wed, 17 Mar 2010 18:18:26 +0000, Vincent Riquer a écrit :


maFunc() {
nc -w5 -z xxx.xxx.xxx.xxx 22 && {
/usr/sbin/echo $1





pour être homogène j'aurais mis le chemin de nc
totti10
Le #21395931
On 18 mar, 08:43, moi-meme
Le Wed, 17 Mar 2010 18:18:26 +0000, Vincent Riquer a écrit :

>> maFunc() {
>>    nc -w5 -z xxx.xxx.xxx.xxx 22 && {
>>         /usr/sbin/echo $1



il se peut entant que tache cron ton script n'a pas le droit
d'utiliser la sortie standard
il te conseille de rediriger l'affichage de l'echo
threepwood
Le #21396251
threepwood a écrit le 17/03/2010 à 16h33 :
Bonjour,

j'ai crée un petit script qui envoi des commandes sur un serveur
distant, mais j'ai un petit soucis..

quand j'execute la commande à la main, cela fonctionne, par contre
dés qu'elle est en crontab, cela ne fonctionne plus.

voici mon script:
********************************************
NARGS=1

maFunc() {
nc -w5 -z xxx.xxx.xxx.xxx 22 && {
/usr/sbin/echo $1
} || maFunc
}
maFunc
**********************

donc ce script, appellons-le "toto.sh" est appellé de la
maniere suivante: "toto.sh TATA"
il teste ensuite le port 22 du serveur distant (ip remplacé par xxx) et
si cela répond, envoi la commande: "echo $i"

Vu que j'ai mis un "NARGS=1" au début, cela devrait envoyer
"echo TATA"
mais via la crontab, cela ne renvoi que "echo"

j'ai fouillé un peu pour trouver une explication, et à priori
cela viendrait de la variable d'environnement.
j'ai donc indiqué /usr/sbin dans le $PATH puisque mon script toto.sh s'y
trouve.

mais cela ne résoud rien :(

si quelqu'un avait une idée...

Merci :)


Merci pour vos réponses.
alors, j'ai mis comme shebang : #!/bin/sh
pour ce qui est de la commande echo dans sbin, heu.. c'est un exemple :p
en fait la commande n'est pas un echo, mais un script sur la machine distante.
j'ai aussi essayé avec maFunc $i
cela ne change rien :(
je seche...
ha vi, j'ai mis aussi le chemin complet pour nc mais ca change rien ;)
threepwood
Le #21396321
totti10 a écrit le 18/03/2010 à 11h39 :
On 18 mar, 08:43, moi-meme wrote:
Le Wed, 17 Mar 2010 18:18:26 +0000, Vincent Riquer a écrit :

>> maFunc() {
>>    nc -w5 -z xxx.xxx.xxx.xxx 22 && {
>>         /usr/sbin/echo $1




il se peut entant que tache cron ton script n'a pas le droit
d'utiliser la sortie standard
il te conseille de rediriger l'affichage de l'echo


je pense aussi que c'est un probleme de ce genre, apres avoir fait quelques recherches, mais la ca dépasse mes competences...
comment faire ?
Merci
Vincent Riquer
Le #21397621
threepwood wrote:
alors, j'ai mis comme shebang : #!/bin/sh



Qui est ? sh ? bash ? dash ? autre ? (ls -l /bin/sh)

pour ce qui est de la commande echo dans sbin, heu.. c'est un exemple :p
en fait la commande n'est pas un echo, mais un script sur la machine distante.
j'ai aussi essayé avec maFunc $i



$i ou $1 ? Si tu as mis $i, c'est normal que ça ne change rien, du moins
d'après le morceau que tu montres.
moi-meme
Le #21400221
Le Wed, 17 Mar 2010 10:33:01 -0500, threepwood a écrit :

quand j'execute la commande à la main, cela fonctionne, par contre dés
qu'elle est en crontab, cela ne fonctionne plus.



et si tu inclus le traitement de ta fonction directement en ligne.
c'est à dire que tu supprimes l'appel à ta fonction en mettant le code à
la place directe ?
Publicité
Poster une réponse
Anonyme