On 24. 02. 16 13:39, Cédric Briner wrote:
Mais lorsque je fais ça sur du root utilisant tsch sur une machine solaris, je
me retrouve avec:
function test(){ if [[ -d /root ]] ; then echo a_root ; else echo no_root; fi; }; ssh
dropzone2 "/usr/bin/bash -c '$(declare -f test) ; test'"
'
Je me retrouve avec le code bash interprété par tsch.
Hihi... encore Solaris avec son attachement au csh et ses dérivés...
Ma question est double:
1) pourquoi est-ce que le code est interprété par tsch
ssh lance une session avec le shell de l'utilisateur. Tu peux tester sur
ton système en faisant :
tcsh -c "/usr/bin/bash -c '$(declare -f test)..."
En fait, le tcsh étant un dérivé de csh, attends-toi à ce que plein de
choses ne fonctionnent pas comme avec tous les autres shell comme sh,
ksh et bash. Cela vient sans doute des différences dans le parsing des
variables/string entre sh et csh...
Mes conseils :
- As-tu vraiment besoin de tourner ça en root... faire du ssh en root me
paraît très, très, très discutable.
2) comment faire au mieux pour faire de la session portable dans le cas ou
l'utilisateur sur la machine cible n'utilise pas bash
- Si tu n'as pas le choix, crée un autre utilisateur avec 'sh', mais
toujours avec le UID de 0... ainsi tu peux te connecter sur celui-ci en
utilisant un autre shell, tout en ayant les mêmes droits :-)
Tu as peut-être au moins /bin/ksh ou /bin/sh... non ?
dc
_______________________________________________
gull mailing list
[email protected]
http://forum.linux-gull.ch/mailman/listinfo/gull