Para o servidor executar um binário ELF (como o interpretador python) em um de seus processos, ele deve ser capaz de mapeá-lo na memória. Ele só pode fazer isso se o arquivo estiver no sistema de arquivos virtual e se o sistema de arquivos que o suporta o suportar.
Então, você precisa copiar esse python
executável (e suas dependências) para o servidor em um dos sistemas de arquivos montados nos quais você tem acesso de gravação ou montar um sistema de arquivos de sua máquina de hortelã no servidor por algum tipo de sistema de arquivos de rede como sshfs, nfs ou cifs.
Para montar um sistema de arquivos, você precisa de privilégios de superusuário ou pelo menos alguns desses privilégios devem ser concedidos a você (via algum executável suid como fusermount
). O administrador desse servidor só concederia esse privilégio a usuários confiáveis, pois é poderoso o suficiente para ser abusado e obter privilégios adicionais.
Se você não conseguir montar sistemas de arquivos, outra opção seria executar o software em um SO emulado, como qemu
. A pergunta que gostaria de fazer primeiro é: por que você precisa executar isso no servidor? Qual recurso do servidor esse programa deve ter acesso? Você não pode expor esses recursos para a sua máquina de hortelã e executar o software lá em vez disso. Você teria que fazer algo assim também se o programa fosse executado em uma VM no servidor.
Para iniciar uma VM do qemu no servidor como uma cópia de sua máquina, supondo que você esteja usando o LVM na máquina de hortelã e que há apenas um sistema de arquivos (o sistema de arquivos raiz) em /dev/mint_VG/root
, você poderia fazer :
-
Faça um instantâneo LVM de
/dev/mint_VG/root
, que se tornará o sistema de arquivos raiz da VM no servidor:sudo lvcreate -s -L10G -n root_vm_on_server mint_VG/root
-
Exportar como um dispositivo de bloco de rede:
sudo nbd-server -C /dev/null 12345 /dev/mint_VG/root_vm_on_server
-
transfira seu kernel e as imagens initrd para o servidor:
scp /boot/{vmlinux,initrd.img}-"$(uname -r)" server:
-
No servidor, execute
qemu
as (talvez emscreen
outmux
):qemu -drive file=nbd:mint-machine:12345,if=virtio -m 4096 \ -kernel vmlinuz-xxx -initrd initrd.img-xxx \ -append 'root=/dev/vda ro init=/bin/bash' -monitor stdio -vnc :4 \ -smp 8,core=8
(aqui rodando com 8 CPUs virtuais e 4GB ou RAM, e como um começo apenas rodando bash
na VM).
Obtenha o console gráfico com um visualizador VNC com um server-machine:4
, ou use um console serial se não precisar de gráficos.
Se você puder convencer o administrador do sistema no servidor para permitir que você use kvm
(dê a você acesso de gravação a /dev/kvm
), isso o tornará muito mais eficiente.