Como retornar multilinha do comando SSH remoto

2

Eu tenho um script que faz backup de sistemas remotos e deseja que ele exiba o espaço em disco no dispositivo de backup remoto anterior e poste o script de backup em execução.

Graças a outro post, aprendemos como executar comandos remotos via SSH, como (as chaves SSH foram configuradas para login automático).

echo 'ssh -t user@host uname -a'

No entanto, como posso obter uma resposta de várias linhas que vem de um comando como

echo 'ssh -t user@host df'

A resposta mostra apenas a última linha de saída do df

    
por Eureka Ikara 07.01.2012 / 01:00

3 respostas

6

Isso soa muito complicado para o SSH em algum lugar e chama um comando.
Basta digitar:

ssh user@host df

Voila. :)

Editar 1
Exemplo de análise de saída remota:

ssh user@host df -P | tail -n +2 | awk '{print $6 "," $4}'

Gera uma lista separada por vírgula de ponto de montagem, availablespace , como:

/,1393276
/usr,3524132
/var,2560004
    
por 07.01.2012 / 01:06
1

Essa pode não ser a maneira mais eficiente ou elegante, mas e algo como:

REMOTEDF="ssh username@hostname df"

echo "Pre-backup df from hostname"
echo date >> $HOME/df-backups.out
echo "" >> $HOME/df-backups.out
$REMOTEDF >> $HOME/df-backups.out
echo "" >> $HOME/df-backups.out

- execute seu backup -

echo "Backup of hostname is complete; post-backup df:"
echo date >>
$HOME/df-backups.out
echo "" >> $HOME/df-backups.out
$REMOTEDF >> $HOME/df-backups.out
echo "" >> $HOME/df-backups.out

    
por 07.01.2012 / 01:29
0

aqui echo é a fonte do problema. Remova o eco e você obterá a saída mutilina. Por que não apenas ssh username@hostname cmd Why -t?

    
por 07.01.2012 / 06:50

Tags