Posez votre question Signaler

Script sur machine distante avec ssh [Résolu]

nabil1706 17Messages postés 21 novembre 2006Date d'inscription - Dernière réponse le 22 déc. 2006 à 14:49
Bonjour
voila mon script sur une machine distante :
#/bin/sh
_arg=$#
if [ $# -ne 1 ]; then
echo "Vous n'avez pas passe le bon nombre de parametre"
exit;
fi
get() {
file=$1;
nb=$2;
the_date=$(date '+%m'"_"'%Y')
echo $(tail -n 1 /home/voicemail/Statistics/Daily/Output/$file"_rep_"$the_date".csv" | cut -d',' -f$nb)
# > output.txt
}
arg=$1;
case $arg in
Call) get "StatProfileDailyCall" 2;
;;
Call1) get "StatProfileDailyCall" 3;
;;
Call2) get "StatProfileDailyCall" 5;
;;
Duration1) get "StatProfileDailyDuration" 2;
;;
Duration2) get "StatProfileDailyDuration" 3 ;
;;
Duration3) get "StatProfileDailyDuration" 6;
;;
Duration4) get "StatProfileDailyDuration" 7;
;;
Mbox) get "StatProfileDailyMbox" 2;
;;
Msg) get "StatProfileDailyMsg" 2;
;;
*) exit
;;
esac
J'aurai besoin d'un script qui lance ce script depuis une autre machine en ssh.... (donc en memorisant aussi mon mot de passe)
merci de votre aide
Lire la suite 

Script sur machine distante avec ssh »

10 réponses
Réponse
+3
moins plus
Ben il faut voir ce que tu as mis dans ta crontab, si le script à les droits en exécution... ce genre de choses :-)

Bonne chance
Ajouter un commentaire
Réponse
+1
moins plus
Ca se fait directement avec la commande ssh !
man ssh


Bonne chance
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

Regarde aussi du côté de la commande "expect".
Tu trouveras un exemple là.

;-))
Ajouter un commentaire
Réponse
+1
moins plus
Moi je dis que tu te casses bien là tête. Il suffit de faire un système de clé SSH pour ne pas avoir à saisir le mot de passe,
http://www.noplay.net/Utilisation-des-clefs-SSH.html

... et d'appeler le script distant sur la même ligne que la commande ssh.
ssh login@hostname /le/script/a/lancer.sh

Bonne chance
Ajouter un commentaire
Réponse
+1
moins plus
oui il a tous les droits
sinon voilà mon script qui fonctionne
#!/usr/bin/expect -f

set i [lrange $argv 0 0]
set timeout 1

spawn /usr/bin/scp -i /home/frt2noc/.ssh/id_rsa script@222.151.167.136:/home/script/stats/Daily/StatProfileDaily* /home/frnoc;
expect "spawn /usr/bin/scp script@222.151.167.136:/home/script/stats/Daily/StatProfileDaily* /home/frnoc\n
Enter passphrase for key '/home/frnoc/.ssh/id_rsa':"
send "mdp\r"
expect eof


J'avais un INTERACT a la fin de mon script et il faut l'enlever et le remplacer par EXPECT EOF quand on le met dans la crontab

merci, et j'espere que ça aidera qqu'un d'autre ;-))
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
j'ai vu l'exemple, je m'en suis inspiré pour faire mon deuxieme script que voilà :
#!/usr/bin/expect -f

set force_conservative 1;

set timeout 3
spawn ssh -i /home/frnabe/.ssh/id_rsa -l script 212.151.167.136
expect "spawn ssh -i /home/frnabe/.ssh/id_rsa -l script 212.151.167.136\n
Enter passphrase for key '/home/frnabe/.ssh/id_rsa':"
send "mdp\r"
expect "\[script@vel-vms-db-1 script\]$"
send ".\/case_test Call\r"
expect "\[script@vel-vms-db-1 script\]$"
send "exit\r"
interact

au niveau de la connection, je ne sais pas comment lui indiquer d'utiliser des arguments et comment lui afficher le résultat sur la machine ou je lance ce script
Merci
Ajouter un commentaire
Réponse
+0
moins plus
Voila mon script qui me permet de recupere des fichiers sur une machine distante, et j'aimerai y intégrer une variable qui prenne les valeurs dont j'ai besoin pour ne ne pas à avoir à ecrire les mêmes commandes à la suite (ici Call , Call1, et il y en a 8 autres)

#!/usr/bin/expect -f

set i [lrange $argv 0 0]

set timeout 3

spawn /usr/bin/scp -i /home/frnabe/.ssh/id_rsa script@222.151.167.136:/home/script/output_Cal
l.txt /home/frnabe;
expect "spawn /usr/bin/scp script@222.151.167.136:/home/script/output_Call.txt /home/frnabe\
n
Enter passphrase for key '/home/frnabe/.ssh/id_rsa':"
send "mdp\r"
interact

spawn /usr/bin/scp -i /home/frnabe/.ssh/id_rsa script@222.151.167.136:/home/script/output_Cal
l1.txt /home/frnabe;
expect "spawn /usr/bin/scp script@222.151.167.136:/home/script/output_Call1.txt /home/frnabe
\n
Enter passphrase for key '/home/frnabe/.ssh/id_rsa':"
send "mdp\r"
interact

Merci
Ajouter un commentaire
Réponse
+0
moins plus
merci de ta reponse,
mais il faut aussi que je rapatrie les fichiers que j'ai créés dans ce meme script
Ajouter un commentaire
Réponse
+0
moins plus
Bon tu as deux PC :
- le pc A qui à ton script actuel
- le pc B qui pilote le script du pc A par ssh.

Tu as deux solutions :
- soit le pc B demande à A d'éxécuter le script, et ce script fait un scp des fichier de A vers B. Ca force à faire une clé ssh supplémentaire (de A vers B) c'est pas forcément top.
- soit tu crées un script sur le pc B, qui lance le script de A, puis rappatrie via scp les fichiers chez lui. Du coup pas besoin de clé ssh supplémentaire c'est toujours celle de B vers A qui est autorisée.

Bonne chance
Ajouter un commentaire
Réponse
+0
moins plus
Merci
j'avais opter pour la deuxieme solution
Maintenant il ne me reste plus qu'a mettre mon script EXPECT dans la crontab..Mais ça marcje pas
une idée ?
Ajouter un commentaire
Ce document intitulé « script sur machine distante avec ssh » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?