[Perl] Commande Root sur machine distante

Fermé
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 17 mars 2009 à 10:39
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 - 18 mars 2009 à 15:53
Bonjour,

Alors voilà j'aimerai me connecter en perl à une machine distante mais pour executer une commande en root.
Sachant que je ne peux pas me connecter en root via ssh (permission refusée).
Sachant également que quand je me connecte sur la machine distante, pour passer en root il faut que je fasse "sudo su -" et ensuite que je tape le mot de passe.

Il faudrait que je fasse un truc du genre :
$cible="machine_distante";
system("/usr/local/bin/ssh $cible; sudo su -; motdepasse; commande à faire en root");

J'ai penser à la commande expect mais je sais pas trop comment je pourrais l'utiliser ici.

Je suis sous SunOs pour information si ça peut aider.

Merci beaucoup de votre aide.

Cordialement,
A voir également:

3 réponses

Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
17 mars 2009 à 15:56
Voilà ce que j'ai fais par contre j'ai un problème, la dernière commande ne veut pas se lancer.


#!/usr/bin/expect -f

set prompt ">>> ";

spawn ssh host
expect "$prompt";
send "sudo su -\r";
expect "Password: $";
send "motdepasse\r";
expect "$prompt";
send "ls /export\r";
exit;

Est-ce que quelqu'un sait pourquoi ?

Merci de votre aide.

Cordialement,
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 mars 2009 à 17:13
0
Maillon Messages postés 156 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 15 avril 2011 5
18 mars 2009 à 15:53
Merci lamij20 ;-)

En fait j'ai fais ça maintenant :
#!/usr/bin/expect -f

set prompt ">>> ";
set force_conservative 1;

set timeout 3
spawn ssh host
expect "$prompt"
send "sudo su -\r"
expect "Password: $"
send "motdepasse\r"
expect "$prompt"
send -- "sh /tmp/test.sh\r"
send -- "exit\r"
send -- "exit\r"
interact

Ca marche par contre il m'affiche ça à la fin :
[root@host] # sh /tmp/test.sh
exit
exit
toto
[root@host] # bash-2.05$ exit
logout
Connection to host closed.

Moi ce que je voudrais c'est dès qu'il affiche toto qu'il se délogue de la machine....
0