RSH dos/unix : Modifier retour chariot

Fermé
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011 - 17 juin 2011 à 10:52
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011 - 17 juin 2011 à 17:00
Bonjour,

J'exécute un programme sur un serveur unix (ksh) distant depuis mon poste windows XP via cmd et en utilisant rsh.

Jusque là aucun problème. Mais le programme en question attend des entrées de ma part ce qui là encore ne pose pas de problème vu que l'entrée est bien redirigée.

Le pb, c'est que lorsque je valide mes choix, en tapant la touche entrée dans cmd, un retour chariot windows (\r\n) est envoyé ce qui pose un pb dans mon script.

Exemple de script ksh à exécuter côté unix:
echo "Test:"
read option
echo "OPTION=$option!!!"
if [[ "$option" == "ok" ]]
then
  echo ' OK !!!!!!!!!!!!' 
else
  echo ' KO :-('
fi

Si on exécute ce script côté unix et que l'on entre "ok", le script écrit "OK !!!"

En revanche si on exécute ce script côté windows via rsh :
rsh <nom_du_serveur> <nom_du_script>
et que l'on entre "ok", le script retourne "KO :-("

On pourra noter au passage que la ligne
echo "OPTION=$option!!!"
affiche
"OPTION=ok!!!"
sous unix mais
"!!!ION=ok"
sous windows.

Ce qui me fait penser que la variable option contient "ok\r" et non juste "ok".

Connaissez-vous ce problème et un moyen d'y remédier ?

Merci d'avance

8 réponses

Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
17 juin 2011 à 14:27
Je ne vois pas de solution simple pour remédier à ça du coté windows, à part utiliser cygwin pour travailler dans un environnement de type unix.
Sur ton script tu peut aussi supprmier tout les \r de ton paramètres avec un petit
option=$(echo $option | sed 's/\\r//g')
0
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011
17 juin 2011 à 14:34
Merci,

Effectivement ça marcherait pour ce script mais il me faudrait une solution globale qui marche quel que soit le programme (y compris un exécutable compilé).

Je pensais qu'il existait peut être un moyen de configurer le caractère utilisé par cmd pour les retour chariots (via la base de registre par exemple). Mais c'était juste une idée, je ne sais pas si cela existe.

Je suis étonné que ce problème ne soit pas plus courant. Personne ne se connecte à des serveur unix depuis windows ?
0
Si c'est un fichier enregistré, tu peux utiliser Notepad++ pour convertir les retours chariots ou pour que soit par défaut pour un nouveau fichier. C'est peut-être trop simple ... Essayes aussi d'enregistrer ton script en UTF-8. Et avec la commande awk avec printf ou printf tout seul à la place de la commande echo ? Salut, à+.
0
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011
17 juin 2011 à 14:49
Non, non, il ne s'agit pas de conversion de caractère dans un fichier mais d'un problème de communication entre un shell windows et un shell unix.

Merci quand même Hip.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
Modifié par Leviathan49 le 17/06/2011 à 15:26
Et si tu passe ton option en paramètre au lieu de le passer via un read, ça te fais la même erreur ?
Si ça ne marche pas utilise cygwin :p
0
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011
17 juin 2011 à 16:24
non, pas de problème dans ce cas puisque je passerai mon option comme paramètre en l'inscrivant dans la chaine de caractère de l'instruction rsh. Dans ce cas, pas de retour chariot perturbateur mais ça ne répond pas au problème.

La finalité serait de pouvoir appeler depuis windows un exécutable unix que je ne peux pas modifier. Tout marche bien excepté la transmission des entrées.
0
Leviathan49 Messages postés 257 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 22 juillet 2011 70
17 juin 2011 à 16:48
Tu as le même roblème en passant via ssh ?
0
wingover Messages postés 21 Date d'inscription lundi 15 décembre 2008 Statut Membre Dernière intervention 17 juin 2011
17 juin 2011 à 17:00
Ah, si seulement j'avais ssh !
Malheureusement je n'ai que rsh et je n'ai pas le choix des applications.
0