63 votes

Forcer SSH à utiliser un shell spécifique

Existe-t-il un moyen de forcer SSH à utiliser un shell particulier à l'extrémité distante, peu importe quel shell par défaut l'utilisateur utilise ?

J'ai essayé des solutions similaires à :

ssh host.domain.com /bin/bash -c 'commande compliquée, sur plusieurs lignes'

mais malheureusement le shell par défaut sur l'extrémité distante est responsable de l'interprétation de la partie "commande compliquée, sur plusieurs lignes", et j'ai du mal à l'échapper suffisamment pour que cela fonctionne à la fois pour les utilisateurs de Bash et de C shell.

0voto

aws Points 1

J'ai rencontré une situation similaire il y a quelque temps où j'avais besoin d'utiliser une coprocesse ksh pour sqlplus et je n'avais qu'un ssh à travers lequel les lectures et écritures devaient avoir lieu.

Une façon de faire cela est de rediriger toutes vos commandes dépendantes sur une seule ligne (utilisez ;) vers /usr/bin/ksh sur la machine distante. par exemple:

host="user@host"

db_conn="ora_user/passwd"

a="select * from dual;"

frmt="set heading off echo off feedback off verify off pagesize 0 termout off"

var=$(ssh ${host} "echo 'sqlplus -silent /nolog |&; sql_pid=\$!; print -p \"conn ${db_conn}\"; print -p \"${frmt}\"; print -p \"${a}\"; print -p \"exit\"; wait \$sql_pid' > /remote_dir/kshcmd.txt; awk '{print \$0}' /remote_dir/kshcmd.txt | /usr/bin/ksh")

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