Como usar o comando cd no comando su?

0

No script abaixo, os casos aserver e bserver funcionam bem. Mas no caso "cserver" acima, depois do su - gsxuserp, eu preciso executar as seguintes três opções com o mesmo usuário.

cd ..
cd random_directory
tail -f file_in_random_directory

Não consigo fazer isso usando a opção -c, já que a conexão é fechada sem executar nada. alguém pode sugerir uma maneira básica de fazer isso?

echo "Please type one of the following: aserver,bserver,cserver:" 
read input
echo "You entered: $input"
case "$input" in 
    "aserver")
        echo "Logging into a. Please enter the passwords when prompted"
        ssh -t [email protected] "ssh -t aserver "su - gsxp -c "sqlplus grep_ro/pwd"""
        ;;
    "bserver")
        echo "Logging into b. Please enter the passwords when prompted"
        ssh -t [email protected] "ssh -t bserver "su - gsxp -c "sqlplus grep_ro/pwd"""
        ;;
    "cserver")
        echo "Logging into c. Please enter the passwords when prompted"
        ssh -t [email protected] "ssh -t cserver "su - gsxuserp -c "cd """

        ;;
        *) 
        echo "Incorrect Option entered. Exiting the script"
        ;;
esac
    
por user1741642 09.03.2016 / 16:03

2 respostas

2

Por que não usar apenas su - gsxuserp -c "tail -f ../random_directory/file_in_random_directory" ?

Múltiplos su não fazem sentido, porque cada um inicia uma nova sessão, executa o comando único e depois fecha. Os subseqüentes não lembram em qual diretório os anteriores estavam, eles herdam o diretório do script de chamada a cada vez.

O comando completo seria (levando em consideração os comentários de citações na outra resposta),

ssh -t [email protected] ssh -t cserver 'su - gsxuserp -c \"tail -f ../random_directory/file_in_random_directory\"'

Por favor, note o uso de aspas simples e duplas (e as aspas duplas escapadas), e não simplesmente uma série de aspas duplas.

    
por 09.03.2016 / 16:28
1

Esta não é uma resposta, é mais um comentário que precisa de formatação extra.

Sua citação está errada: aspas duplas não aninham, elas alternam:

ssh -t [email protected] "ssh -t bserver "su - gsxp -c "sqlplus grep_ro/pwd"""
# .... unquoted ..........^..quoted.......^..unquoted...^....quoted.........^^^

Seu comando ssh real possui estes argumentos:

ssh -t \
    [email protected] \
    "ssh -t bserver " \
    su  \
    -  \
    gsxp  \
    -c  \
    "sqlplus grep_ro/pwd"

Isso é um pouco mais sensato:

ssh -t [email protected] ssh -t bserver "su - gsxp -c 'sqlplus grep_ro/pwd'"
    
por 09.03.2016 / 17:36