Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1827 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  comment faire en bash script .... [ou perl]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment faire en bash script .... [ou perl]

n°521055
Kytrix
Posté le 15-07-2004 à 14:32:34  profilanswer
 

Bonjour,
 
    Désolé pour ce titre peu explicite, mais je ne sais pas trop comment définir mon problème :
 
Je veux faire un script qui lance un programme (lequel est un genre de shell ou telnet...) et ensuite passer des commandes à ce programme.
 
c'est comparable à un script qui se conecte en ftp pour récupérer un fichier :
 
#!/bin/sh
HOST='monsiteftp'
USER='public'
PASSWD='public'
ftp -nv $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd rep
get fichier.txt
quit
END_SCRIPT
 
dans mon cas il s'agit un programme propriétaire qui n'a rien a voir avec ftp.
une fois que j'ai lancé ce programme, je veux effectuer 2 commandes,  
en général la première commande passe, mais la 2emme est envoyée alors que le programme n'a pas répondu à la première commande ! et donc la 2emme commande ne passe pas :/
 
dans l'exemple du ftp cela reviendrai a vouloir faire :  
get fichier.txt
get fichier2.txt  
et que le 'get fichier2.txt' soit envoyé alors que le 'get fichier.txt' n'ai pas fini.
 
le pb c'est que dans le cas du ftp tout fonctionne bien, et dans le cas du programme non :/
 
 
je suis perdu et je ne vois pas comment m'en sortir.
 
merci.


Message édité par Kytrix le 15-07-2004 à 16:06:57
mood
Publicité
Posté le 15-07-2004 à 14:32:34  profilanswer
 

n°521058
francoisp
Posté le 15-07-2004 à 14:36:50  profilanswer
 

Commande 1
test du resultat
si resultat ok alors
Commande 2
fin si
 
voilà tout simplement..
 
j'ai déja eut ce genre de problème aussi et c'est le seul moyen de faire si l'application proprio libere la suite d'elle même


---------------
If everything else failed then read the instructions
n°521063
Kytrix
Posté le 15-07-2004 à 14:42:38  profilanswer
 

oui me le problème (corrige moi si je me trompe)
c'est qu'entre 'monprog <<END_SCRIPT' et 'END_SCRIPT'
toutes les commandes sont envoyée au programme !!
si je voulais faire :
monprog <<FIN
commande1
if mon test
commande2
FIN
 
j'aurais mon prog qui me renverrai : 'if' command not foud !
 
:S
if faudrai que je puisse :
-récupérer ce que 'monprog' renvoi a l'écran
-effectuer un test sans qu'il soit 'envoyé' a monprog
 
tu vois ce que je veux dire ? :S

n°521066
francoisp
Posté le 15-07-2004 à 14:47:45  profilanswer
 

non même en FTP par exemple
la commande ! permet de lancer du shell
 
et tu peux lancer aussi autre solution :
commande 1 << fsdfsdfs
.....
fsdfsdfs
test
commande 2 << dsfsdfsdfs
....
dsfsdfsdfs
 
ou encore plus simple tu fais
 
tant que fichier err existe pas
programme << FIN 2> err
....
FIN
done
 
si une erreur se produit  
le fichier err est crée et le programe killé par l'arret de la boucle tant que...
 
suffit de savoir si ton application genere des retours d'erreur recuperables 2> ou pour la solution d'appel au shell (! en ftp) si elle est prevue....
 
si avec ces trois solutions tu en trouves pas une qui marche avec ton application tu peux la jetter c'est qu'elle ne respecte aucun standard unix .....donc poubelle.


Message édité par francoisp le 15-07-2004 à 14:49:43

---------------
If everything else failed then read the instructions
n°521084
Kytrix
Posté le 15-07-2004 à 15:17:35  profilanswer
 

avec le programme que j'utilise ! ne fonctionne pas, il essaye d'interpreter aussi :/
 
si je redirige toute les sorties vers un fichier ex:
monprog >log.txt <<FIN
(1)
commande1
(2)
commande2
(3)
FIN
 
alors il faudrai que je puisse lire le fichier en (1)puis en (2)et en (3) , donc que mes commandes de lecture ne soient pas redirigées vers mon programme :/
 
 
:cry:

n°521085
bobuse
Posté le 15-07-2004 à 15:17:42  profilanswer
 

heu le coup du ! pour interpréter du shell, c'est pas forcément un standard :o
 
essaye plutôt du côté de python (ou C) pour pouvoir gérer plus finement le flux du process que tu lances ...

n°521092
Kytrix
Posté le 15-07-2004 à 15:28:50  profilanswer
 

ok merci, je vais essayer de ce coté ...

n°521095
gauret
Posté le 15-07-2004 à 15:41:05  profilanswer
 

expect est ton ami.

n°521113
Kytrix
Posté le 15-07-2004 à 16:05:51  profilanswer
 

c'est quoi expect ?
 
sinon je voudrai bien essayer en perl, mais j'ai aucune idée de comment orienté mes recherches :/
j'ai essayé comme avec le bash de chercher des scripts ftp, mais en perl ils utilisent une librairie spécifique .. et non le programme ftp+envoi des commmandes :S
 
sinon l'autre solution c'est de créer un programme (sous windows) qui se conecte en ssh et qui envoi et reçoit les commandes :S

n°521127
bobuse
Posté le 15-07-2004 à 16:32:41  profilanswer
 

pkoi sous windows ?
en python ou perl sous linux, tu lances ton prog dans un process, et tu fait ce que tu veux des entrées-sorties :)

mood
Publicité
Posté le 15-07-2004 à 16:32:41  profilanswer
 

n°521142
Kytrix
Posté le 15-07-2004 à 17:02:57  profilanswer
 

je disais sous windows car l'utlisateur final est sous windows :) et donc si j'avai une petite classe qui gere le ssh, je pourais gérer facilement les entrées sorties avec le shell (mais bon c'est pas le pb ici)
 
pour l'instant je vais me concentrer sur un script qui va me permettre de passer les commandes :/

n°521152
francoisp
Posté le 15-07-2004 à 17:19:25  profilanswer
 

bobuse a écrit :

heu le coup du ! pour interpréter du shell, c'est pas forcément un standard :o
 
essaye plutôt du côté de python (ou C) pour pouvoir gérer plus finement le flux du process que tu lances ...


 
j'ai jamais dit !=standard mais  
interpreter du shell dans des applis oui forcement que la syntaxe varie d'une applie à une autre !ne me fait pas dire ce que je ne dis pas !


---------------
If everything else failed then read the instructions
n°521155
francoisp
Posté le 15-07-2004 à 17:22:39  profilanswer
 

Kytrix a écrit :

avec le programme que j'utilise ! ne fonctionne pas, il essaye d'interpreter aussi :/
 
si je redirige toute les sorties vers un fichier ex:
monprog >log.txt <<FIN
(1)
commande1
(2)
commande2
(3)
FIN
 
alors il faudrai que je puisse lire le fichier en (1)puis en (2)et en (3) , donc que mes commandes de lecture ne soient pas redirigées vers mon programme :/
 
 
:cry:


 
 
la syntaxe n'est pas forcement "!"
 
ensuite si la possibilité n'existe pas utilise le "tantque"...
 
si ça echoue aussi  
passe par le C ou python mais ça va etre lourd...
 
enfin assures toi aussi que c'est pas le fonctionnement normal de ton appli de lancer ses commandes internes à la volée... au cas où....
 
on sait jamais avec les applis prorio...


---------------
If everything else failed then read the instructions
n°521161
Kytrix
Posté le 15-07-2004 à 17:33:09  profilanswer
 

et en perl ? :)
 
ou je peux trouver de l'aide pour "gerer" une application console a partir d'un programme en c ?  
une idée des mots clés a chercher ? :)

n°521405
matafan
Posté le 16-07-2004 à 06:06:34  profilanswer
 

En perl y'au un module pour les pipes bidirectionels (j'ai lu en travers mais il me semble que c'est ce qu'il te faut).

n°521456
bobuse
Posté le 16-07-2004 à 09:40:58  profilanswer
 

cherches sur des noms de fonctions comme sys() exec() ... je dis un peu au pif, mais si ça peut t'aider ...
 
En python : http://docs.python.org/lib/module-popen2.html


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  comment faire en bash script .... [ou perl]

 

Sujets relatifs
Jouer un fichier sonore dans un script phplancer un script et stocker le num de processus de celui-ci
Script shell de renommage de fichiers et répertoires[script] Manipulation de fichier, besoin d optimisation
[Perl] Problème avec Chomp :OVérifier l'existence de variable en bash
Logiciel ou script de statistiques postfix ?Executer un script php en tant que root
Script bash et RRDTOOL -> Probleme 
Plus de sujets relatifs à : comment faire en bash script .... [ou perl]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)