虽然我认为您的特定应用程序会有自己的怪癖(就像我的一样),但这可能会让您走上正确的道路。下面是我使用基于 paramiko 构建的 Fabric 将文件放到远程 EC2 实例上的脚本的一个简短片段。还要注意我把 sudo 命令放在哪里,因为 Fabric 有自己的“sudo”类。这是我所指的那些怪癖之一。希望这可以帮助某人。
from fabric.api import env, run, put, settings, cd
from fabric.contrib.files import exists
'''
sudo apt-get install fabric
Initially setup for interaction with an AWS EC2 instance
At the terminal prompt run:
fab ec2 makeRemoteDirectory changePermissions putScript
'''
TARGETPATH = '/your/path/here'
def ec2():
env.hosts = ['your EC2 Instance or remote address']
env.user = 'user_name'
env.key_filename = '/path/to/your/private_key.pem'
def makeRemoteDirectory():
if not exists('%s'%TARGETPATH):
run('sudo mkdir %s'%TARGETPATH)
def changePermissions():
run('sudo chown -R %(user)s:%(user)s %(path)s'%{'user': env.user, 'path': TARGETPATH})
def putScript():
fileName = '/path/to/local/file'
dirName = TARGETPATH
put(fileName, dirName)