Posso passar uma execução de script subsequente para um shell de conexão ssh estabelecido?

Posso passar uma execução de script subsequente para um shell de conexão ssh estabelecido?

Desejo executar uma parte do script após o estabelecimento de uma conexão ssh bem-sucedida. Gostaria de tornar mais fácil acompanhar um arquivo de log com um script que estou tentando escrever.

Aqui está o trabalho do script em andamento:

echo "[Log Tunnel]" 
 
if [ "$1" == "foo" ] 
        then 
                echo "connecting to foo.dev.company.net" 
                ssh foo.dev.company.net        
                tail -f var/logs/staff/backend/backend.log # what's the way to do this
fi 
 
if [ "$1" == "bar" ] 
        then 
                echo "connecting to bar.dev.company.net" 
                ssh bar.dev.company.net         
fi 

Quando executo o script, espero o seguinte:

[Log Tunnel]
connecting to foo.dev.company.net
[email protected]'s password: ***********
# Output of Tail

Gostaria de saber se é possível estabelecer a conexão ssh e passar ao shell subsequente um novo script que deve ser executado logo após a inicialização.

Editar:

Meu objetivo é seguir um arquivo de log em um servidor remoto em meu shell. O script deve facilitar o acompanhamento desses arquivos de log com minha digitação simples ./rtail.sh foo. Ao executar esse comando, espero que o shell exiba a saída final específica, dependendo do servidor remoto que escolhi pelo argumento do shell. Eu só quero um atalho para:

  • ssh para servidor remoto
  • tail -f caminho/para/logfile.log

Responder1

Se bem entendi, você está procurando algo assim:


#!/bin/sh

echo "[Log Tunnel]" 
 
if [ "$1" = "foo" ] 
then 
  server="foo.dev.company.net"
  file="var/logs/staff/backend/backend.log"
elif [ "$1" = "bar" ]
then
  server="bar.dev.company.net"
  file="some/other/file"
fi

echo "connecting to $server" 
ssh "$server" tail -f "$file"

informação relacionada