亚马逊网络服务/Boto:通过SSH在本地主机上上传并执行远程Python/Bash脚本

2 投票
3 回答
506 浏览
提问于 2025-04-17 04:32

我可以通过AWS启动一个Ubuntu的EC2实例,并且使用boto这个工具。有谁尝试过把脚本上传到远程的Ubuntu EC2实例(不止一个)并通过本地的SSH来执行这个脚本吗?

我的主要目标是用在本地写的Python脚本来自动化整个过程。有没有其他的方法或者亚马逊的API工具可以实现这个呢?

3 个回答

0

这里是用Paramiko在远程的AWS EC2上执行Python代码的示例:

import paramiko
sftp, transport= None, None,  None
try:
    if keyfilepath=='': keyfilepath= AWS_KEY_PEM
    if keyfiletype == 'DSA':  key = paramiko.DSSKey.from_private_key_file(keyfilepath)
    else:                     key = paramiko.RSAKey.from_private_key_file(keyfilepath)

    if contype== 'sftp' :
      transport = paramiko.Transport((host, port))
      transport.add_server_key(key)
      transport.connect(None, username,  pkey=key)
      sftp = paramiko.SFTPClient.from_transport(transport)
      if isprint : print('Root Directory :\n ', sftp.listdir())
      return sftp

except Exception as e:
    print('An error occurred creating client: %s: %s' % (e.__class__, e))
    if sftp is not None:      sftp.close()
    if transport is not None: transport.close()
    if ssh is not None: ssh.close()
1

我推荐你使用Fabric,这个工具就是为了处理这种事情而设计的。

0

使用 paramiko 这个接口

撰写回答