Я хочу запустить скрипт Python удаленно через SSH. Для одного скрипта это будет примерно так:

ssh user@machine python test.py

Если моя программа на Python состоит из нескольких файлов, мне не повезло с этим. Поскольку Python может выполнять zip-файлы, я создал один, и он отлично работает в моей локальной системе:

python test.zip

За ssh:

ssh user@machine python < test.zip

Я получил сообщение об ошибке «SyntaxError: Код не-UTF-8, начинающийся с ...». Оба файла в архиве начинаются с "- - coding: utf-8 - -".

Что я должен сделать, чтобы сделать эту работу?

1 ответ1

0

Основная проблема с

ssh user@machine python < test.zip

это то, что test.zip отправляется в ssh вместо python .

Решение в переполнении стека может работать, если вы реализуете упомянутый там Python-скрипт (скопированный ниже):

#!/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()

Сохраните его как zip_parse_script.py на удаленной машине и выполните вашу команду, используя

test.zip | ssh user@machine python /path_to_python_script/zip_parse_script.py

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .