web-dev-qa-db-fra.com

SSH change alors de Shell

Potentiellement une question vraiment facile, mais je me demandais si quelqu'un pouvait bien vouloir fournir des conseils.

Pour accomplir une tâche répétitive, je me connecte constamment à un serveur Solaris distant à l'aide des informations d'identification qui nous ont été fournies par notre administrateur système. Cependant, chaque fois que je me connecte, je dois changer Shell (de csh -> bash) car la tâche spécifique doit être exécutée à l'aide de BASH.

Bien que ce ne soit pas un problème majeur, je trouve le changement de bash Shell un peu fastidieux car je dois répéter cette tâche plusieurs fois par jour, et parfois aussi oublier de changer de shell avant d'exécuter la tâche, etc. (je préfère aussi BASH aussi alors).

Existe-t-il un moyen de ssh et de modifier le shell par défaut sur une seule ligne afin de pouvoir commencer immédiatement avec le script que je veux sur le serveur distant? Remarque, je ne sais pas quoi changer les fichiers de connexion (comme .login ou .cshrc) car le serveur distant et les informations d'identification sont partagées et pas spécifiquement pour moi. Je ne veux pas non plus changer le Shell par défaut sur le serveur car, encore une fois, le serveur et les informations d'identification sont utilisés par plusieurs personnes.

Quelqu'un aurait-il des idées pour contourner un tel problème? Toutes les suggestions seraient grandement appréciées.

17
user2511875

SSH exécute généralement la commande que vous lui transmettez comme argument, puis se déconnecte. Vous aurez besoin de trois options définies pour que votre session interactive fonctionne:

  • ssh -t forcera l'allocation pseudo-tty nécessaire pour que vous puissiez interagir avec la commande à distance que vous demandez à SSH d'exécuter
  • bash -l lancera un shell de connexion interactif
  • csh -l -c lancera un shell de connexion interactif dans csh, puis exécutera la commande qui suit

Pour simplement lancer un autre Shell (c'est-à-dire que votre valeur par défaut est csh et que vous souhaitez lancer bash):

ssh -t <user>@<server> "bash -l"

Pour récupérer l'environnement csh d'abord, nous démarrons le shell interactif, puis passons la commande pour basculer vers bash:

ssh -t <user>@<server> 'csh -l -c "bash"'
30
Beggarman