Effectuer une opération shell à travers un shell sécurisé

0

Est-il possible d'effectuer une opération shell à partir d'un script bash via un shell sécurisé?

Voici un exemple de pourquoi vous voudrez peut-être faire cela. Disons que vous avez un système d’exploitation unix simple que vous devez seulement compiler et exécuter, mais que vous voulez faire tout le développement sur une autre machine. Je souhaite écrire un script bash doté des fonctionnalités suivantes:

scp file to location on other machine
ssh to other machine
cd into correct directory 
make 
run program
scp results to file on original computer
exit ssh

Est-ce possible à distance? (Pardon le Pun: p)

Fantastique M. Fox
la source
ssh user1 @ server1 '/scripts/backup.sh' exécutera le script sur la machine distante. Vous pouvez simplement scp "backup.sh" à l'emplacement requis, appeler ssh et quitter
@UsmanSaleem Vous devriez ajouter ceci comme réponse.
Fantastique M. Fox

Réponses:

2

Comme exemple direct de votre pseudo-code,

scp file remote:/tmp/file
ssh remote 'cd /tmp; cat file >another; rm another'
scp remote:/tmp/another /tmp

Peut-être souhaitez-vous éviter l'utilisation de fichiers temporaires; si vous pouvez utiliser l’entrée et la sortie standard pour cela, vous pourriez vous en tirer avec quelque chose comme:

ssh remote 'remotescriptname' <input >output

... en supposant que vous remotescriptnamepuissiez lire une entrée standard et que vous obtenez le résultat sur une sortie standard. (Vous voudrez empêcher les commandes bruyantes comme makede produire n'importe quelle sortie sur une sortie standard; make -sest votre ami.)

Vous remarquerez que vous pouvez avoir un extrait de script shell extrêmement complexe entre les guillemets simples. Il n’est pas nécessaire d’avoir un programme remotescriptnamesi vous préférez mettre la ligne de commande complète des commandes individuelles entre les guillemets simples, comme dans mon premier exemple; mais vous pouvez quand même le faire, car un script autonome est plus facile à déboguer et à maintenir.

triple
la source
1

Oui, c'est possible Par exemple:

$ echo 'date' | ssh localhost
Pseudo-terminal will not be allocated because stdin is not a terminal.
Password:
Sun Dec 16 22:15:08 CST 2012

Je vous suggère de créer un script côté distant qui effectuera les builds et scp en cas de succès, afin de minimiser le nombre de commandes distantes à envoyer. De plus, créer une clé RSA sans mot de passe vous simplifiera la vie.

MODIFIER:

Pendant que nous sommes sur le sujet, vous pourriez être intéressé par quelques-uns de ces programmes.

distcc: Distribue les générations sur plusieurs machines

buildbot: Construisez automatiquement le code car il est archivé sur un nombre quelconque de machines / systèmes d’exploitation et exécutez des tests unitaires, etc.


la source
1

ssh user1 @ server1 '/scripts/backup.sh' exécutera le script sur la machine distante. Vous pouvez simplement scp "backup.sh" à l’emplacement requis, appeler ssh et quitter

Usman Saleem
la source
Vous pouvez copier les clés publiques de votre poste client sur votre serveur et inversement pour vous éviter de saisir des mots de passe.