![通过ssh远程运行由多个文件组成的python脚本](https://linux22.com/image/1522690/%E9%80%9A%E8%BF%87ssh%E8%BF%9C%E7%A8%8B%E8%BF%90%E8%A1%8C%E7%94%B1%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E7%BB%84%E6%88%90%E7%9A%84python%E8%84%9A%E6%9C%AC.png)
我想通过 ssh 远程运行一个 python 脚本。对于单个脚本,这将是这样的:
ssh user@machine python test.py
如果我的 Python 程序由多个文件组成,那么我就没那么幸运了。由于 Python 可以执行 zip 文件,所以我创建了一个,它在我的本地系统上完美运行:
python test.zip
通过 ssh:
ssh user@machine python < test.zip
我收到错误消息“语法错误:非 UTF-8 代码以...开头”。存档中的两个文件都以“-- 编码:utf-8 --”。
我要做什么才能让它成功?
答案1
基本问题
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