web-dev-qa-db-fra.com

Comment exécuter plusieurs scripts sur une machine distante

Je dois me connecter à distance à une passerelle (fonctionnant sur la plate-forme Linux), à l'intérieur de laquelle j'ai quelques fichiers exécutables (signingModule.sh et taxModule.sh). Maintenant, je veux écrire un script sur mon bureau qui se connecte à cette passerelle et exécute signingModule.sh et taxModule.sh dans deux terminaux différents.

J'ai écrit le code ci-dessous:

ssh [email protected] #to connect to gateway
sleep 5
cd /opt/swfiscal/signingModule #path of both modules
./signingModule #executable

mais grâce à ce code, je peux connecter ma passerelle, mais rien ne se passe après la connexion à la passerelle.

2ème code:

source configPath # file where i have given path of both the modules(configPath is placed in local machine)
cd $FCM_SCRIPTS # variable in which i have stored the path of modules
ssh [email protected] 'sh -' < signingModule #to connect and run one module (signingModule is placed in remote machine)

En sortie de ceci, je reçois: source: configPath: file not found

S'il vous plaît, aidez-moi à résoudre ce problème. Merci d'avance.

Remarque:

  1. Je peux copier coller mes fichiers dans cette passerelle si nécessaire.
  2. Gnome-Terminal ou toute autre solution de ce type ne fonctionne pas dans ma passerelle.
  3. Je dois exécuter tous les modules (signature et taxes) dans un terminal différent, car mon autre application ne fonctionnera que lorsque ces deux modules seront opérationnels. afin de les faire fonctionner simultanément, nous devons les exécuter dans différents onglets ou terminaux.
  4. Je dois écrire un script sur ma machine locale qui exécutera les deux modules (signature et taxe) placés dans la passerelle distante. Donc, je veux exécuter ce script sur ma machine locale qui va frapper les modules de la passerelle.
3
Siddharth Tiwari

L'erreur que vous avez provoquée signifie que le fichier configPath n'existe pas dans le dossier où vous avez exécuté la commande source configPath.

En admettant que:

  • le fichier configPath contient les instructions:
    #!/bin/bash
    export FCM_SCRIPTS=/path/on/remote/machine
    
  • Dans le dossier /path/on/remote/machine se trouve un fichier exécutable signingModule
  • fichier configPath se trouve dans le dossier /path/on/local/machine

Si ces hypothèses sont vraies, vous devriez créer sur la machine locale un script simple /path/on/local/machine/remoteExecution.sh:

#!/bin/bash
cd $FCM_SCRIPTS
./signingModule

et essaye:

cd /path/on/local/machine 
ssh [email protected] 'bash -s' < <(cat configPath remoteExecution.sh)

où l'option -s signifie que les commandes sont lues à partir de l'entrée standard.

1
Lety