1 votes

Le script Expect ne renvoie pas (cat) un fichier sur un serveur distant

J'ai un script expect qui vérifie si un fichier existe sur un serveur distant et essaie ensuite de l'imprimer (en utilisant cat) s'il existe

Pour une raison inconnue, le script expect ignore ces commandes.

send "if {[file exists "./abc.test"]} {cat ./abc.txt\r}"

1voto

Christian Deger Points 503

Je n'ai jamais utilisé Expect, mais votre exemple de code...

if {[file exists "./abc.test"]} {send "cat ./abc.txt\r"}

...semble vérifier l'existence du fichier sur la machine sur laquelle expect est exécuté, pas sur le serveur distant. Donc à moins que le script ne soit exécuté sur le serveur distant, cela ne fonctionnera pas.

1voto

Anders Points 34448

Voici ce que j'ai fait et maintenant ça marche

cat /some/path/abc.txt 2> /dev/null

Ainsi, le fichier est affiché s'il existe et ne génère pas d'erreur s'il n'existe pas.

0voto

Andrew Grimm Points 928

Hm, vous faites probablement les choses d'une manière plutôt détournée.

Tout d'abord, veuillez décrire votre contexte:

  • Comment (ligne de commande complète) invoquez-vous ce script?
  • Comment accède-t-il au serveur distant? Il n'y a pas d'accès distant dans le script que vous avez fourni.

Enfin, que cherchez-vous vraiment à faire? Si vous souhaitez imprimer un fichier sur un système distant, il est probablement plus facile d'invoquer directement ssh. Expect est destiné à l'écriture de programmes qui n'ont pas de langage de script (comme des clients ftp simples). C'est inutilement compliqué de l'utiliser avec un shell de commandes, qui a déjà un langage de script puissant.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X