O que eu uso para um problema semelhante é colocar todo o script remoto em um arquivo, digamos /usr/local/bin/debinstall.sh
. Minha sugestão para isso no seu caso seria: Tenha um diretório especial onde você coloca os pacotes - vamos chamá-lo de /tmp/remoteinstall
para ter um exemplo. Além disso, coloque o usuário ao qual você se conecta no arquivo /etc/suduers
e permita que ele execute sudo dpkg -i *
sem que seja solicitada uma senha. debinstall.sh
ficaria assim:
#!/bin/bash
cd /tmp/remoteinstall
sudo dpkg -i *.deb && rm -f *
Torne este script de propriedade de e chmod 744 /usr/local/bin/debinstall.sh
.
Localmente, seu trabalho seria simplesmente enviar seus arquivos .deb e chamar o script:
cd /path/to/files
scp * user@remotemachine:/tmp/remoteinstall
ssh user@remotemachine /usr/local/bin/debinstall.sh
debinstall.sh
então instalaria seus pacotes e depois esvaziaria o diretório somente quando a instalação terminasse com sucesso .
Caso algo esteja faltando no $PATH
, lembre-se de que nem .bashrc
nem .profile
são executáveis dessa forma - portanto, você pode querer fornecê-los no início do script remoto ou definir o PATH lá.