Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de $PATH ?

9 réponses
Avatar
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 :)

9 réponses

Avatar
debug this fifo
threepwood wrote:

/usr/sbin/echo $1



un echo dans sbin ? wtf ?
Avatar
Vincent Riquer
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...
Avatar
Nicolas George
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.
Avatar
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





pour être homogène j'aurais mis le chemin de nc
Avatar
totti10
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
Avatar
threepwood
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 ;)
Avatar
threepwood
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
Avatar
Vincent Riquer
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.
Avatar
moi-meme
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 ?