expect : invalid command name "sudo"

8 réponses
Avatar
unbewusst.sein
je dois lancer un script par sudo aussi je le lance par expect pour
éviter d'entrer le pass et là j'ai le message :
iBook:~/Tests yt$ ./landp.exp
invalid command name "sudo"
while executing
"sudo /Users/yt/Tests/landp.zsh"
(file "./landp.exp" line 3)

landp.exp :
#!/usr/bin/expect -f

sudo /Users/yt/Tests/landp.zsh
expect "Password:"
send "monpassword\r"
expect "task ended."
send_user "Synchronisation of '/Users/yt/Sites/landp_new'\n"
send_user " to '/Users/yt/Sites/landp_public' ended.\n"


landp.zsh :
#!/bin/zsh

org=/Users/yt/Sites/landp_new
bup=/Users/yt/Sites/landp_public
mkdir -p ${bup}

dir_list=(css essais img js php)

cp -p "${org}/landp.html" "${bup}/"
echo "'${org}/landp.html' moved to '${bup}'."

while (( i++ < ${#dir_list} )) {
dir=$dir_list[i]
cp -Rp "${org}/${dir}" "${bup}/"
echo "'${org}/${dir}' moved to '${bup}'."
}

echo ""
i=0
del_list=(php/landp.db php/landp.xml)

while (( i++ < ${#del_list} )) {
fil=$del_list[i]
rm -f "${bup}/${fil}"
echo "'${bup}/${fil}' removed from '${bup}'."
}
echo "task ended."


j'utilise donc l'expect builtin de Mac OS X 10.4.11.
--
« Sois heureux un instant. Cet instant, c'est ta vie. »
(Omar Khayam)

8 réponses

Avatar
Patrick Stadelmann
In article <1k6r8zt.1q0bgzkgnuxzbN%,
(Une Bévue) wrote:

je dois lancer un script par sudo aussi je le lance par expect pour
éviter d'entrer le pass et là j'ai le message :



Pourquoi ne pas autoriser la commande sans mot de passe dans le sudoers ?

Patrick
--
Patrick Stadelmann
Avatar
ST
On 29/8/11 3:36 PM, Une Bévue wrote:
#!/usr/bin/expect -f

sudo /Users/yt/Tests/landp.zsh



ne faut il pas écrire

spawn sudo ...

?


expect "Password:"
send "monpasswordr"
expect "task ended."
send_user "Synchronisation of '/Users/yt/Sites/landp_new'n"
send_user " to '/Users/yt/Sites/landp_public' ended.n"


--
http://www.unices.org
Avatar
unbewusst.sein
ST wrote:

spawn sudo ...



si et ça roule maintenant...

--
« Tel n'a de chaleur pour ses amis, que pour les brûler. »
(Proverbe arabe)
Avatar
TK
Le 29/08/11 09:36, Une Bévue a écrit :
je dois lancer un script par sudo aussi je le lance par expect pour
éviter d'entrer le pass et là j'ai le message :



Plutôt que de lancer expect avec le mot de passe en clair, peut-être
est-il plus simple et plus sûr de faire un petit visudo pour autoriser
le lancement du script en question sans mot de passe (man sudoers ou
voir les exemples dans le fichier /etc/sudoers de base).
Avatar
francois.jacquemin
Une Bévue wrote:



landp.exp :
#!/usr/bin/expect -f

sudo /Users/yt/Tests/landp.zsh
expect "Password:"
send "monpasswordr"
expect "task ended."
send_user "Synchronisation of '/Users/yt/Sites/landp_new'n"
send_user " to '/Users/yt/Sites/landp_public' ended.n"


landp.zsh :
#!/bin/zsh


j'utilise donc l'expect builtin de Mac OS X 10.4.11.



Tu as essayé avec le flag -D pour voir où ça ne va pas ?
--
F. J.
Avatar
gerald.coyot
Une Bévue wrote:

François Jacquemin wrote:
> Une Bévue wrote:
>
>
>>
>> landp.exp :
>> #!/usr/bin/expect -f
>>
>> sudo /Users/yt/Tests/landp.zsh
>> expect "Password:"
>> send "monpasswordr"
>> expect "task ended."
>> send_user "Synchronisation of '/Users/yt/Sites/landp_new'n"
>> send_user " to '/Users/yt/Sites/landp_public' ended.n"
>>
>>
>> landp.zsh :
>> #!/bin/zsh
>
>>
>> j'utilise donc l'expect builtin de Mac OS X 10.4.11.
>
> Tu as essayé avec le flag -D pour voir où ça ne va pas ?

Non, on m'a expliqué qu'il fallait "spawner" devant le sudo et là ça roule
impeccable !



As-tu essayé autoexpect qui vient normalement avec la suite expect. Cela
donne en general en r'esultat un script que l`on doit adapter
(nettoyage) mais qui peut etre une bonne base pour des actions
complexes.

--
Amitiés, Gérard Cojot
'Bienheureux les fêlés, ils laisseront passer ma lumière'[M.Audiard]
http://perso.orange.fr/gerard.cojot/
Avatar
Une Bévue
On 11/09/2011 20:40, Gérard Cojot wrote:
As-tu essayé autoexpect qui vient normalement avec la suite expect. Cela
donne en general en r'esultat un script que l`on doit adapter
(nettoyage) mais qui peut etre une bonne base pour des actions
complexes.



non, mais j'essaierai d'y penser la prochaine fois
Avatar
unbewusst.sein
Gérard Cojot wrote:


As-tu essayé autoexpect qui vient normalement avec la suite expect. Cela
donne en general en r'esultat un script que l`on doit adapter
(nettoyage) mais qui peut etre une bonne base pour des actions
complexes.



Ben, je viens juste d'essayer, ça marche pô, il faut que je revoie mon
install d'expect :

imyt% autoexpect
can't find package Expect
while executing
"package require Expect"
(file "/opt/local/bin/autoexpect" line 6)
imyt%

c'est curieux car expect, comme autoexpect sont bien de MacPorts :
imyt% which expect
/opt/local/bin/expect
imyt% which autoexpect
/opt/local/bin/autoexpect
imyt%


à fouiner donc...

--
« L'homme vraiment libre est celui qui sait refuser une invitation à
dîner sans donner de prétexte. »
(Beaumarchais)