Executa remotamente script python que consiste em vários arquivos via ssh

0

Eu quero rodar um script python remotamente via ssh. Para um único script, seria algo assim:

ssh user@machine python test.py

Se meu programa python consiste em vários arquivos, estou sem sorte com isso. Como o Python pode executar arquivos zip, eu criei um e ele funciona perfeitamente no meu sistema local:

python test.zip

Por ssh:

ssh user@machine python < test.zip

Recebi a mensagem de erro "SyntaxError: Código não UTF-8 começando com ...". Ambos os arquivos no arquivo começam com "- - coding: utf-8 - -".

O que preciso fazer para que isso funcione?

    
por Christian Waidner 21.02.2017 / 15:37

1 resposta

0

O problema básico com

ssh user@machine python < test.zip

é que test.zip é enviado para ssh em vez de python .

A solução em estouro de pilha pode funcionar, se você implementar o script python mencionado aqui (copiado abaixo):

#!/usr/bin/python 

import sys
import os
import zipfile
import StringIO
import zipimport
import time

sys.path.append('/tmp')

class SinEater(object):
    def __init__(self):
        tmp = str(int(time.time()*100)) + '.zip'
        f = open(tmp, 'w')
        f.write(sys.stdin.read(1024*64)) # 64kb limit
        f.close()
        try:
            z = zipimport.zipimporter(tmp)
            z.load_module('foo')

        except:
            pass

if __name__ == '__main__':
    print 'herp derp'
    s = SinEater()

Salve-o como zip_parse_script.py na máquina remota e executará seu comando usando

test.zip | ssh user@machine python /path_to_python_script/zip_parse_script.py
    
por 21.02.2017 / 17:19