【问题标题】:How to run a script on your aws-ec2 from a script on your local machine?如何从本地计算机上的脚本在 aws-ec2 上运行脚本?
【发布时间】:2016-10-11 14:57:54
【问题描述】:

我的本​​地机器上有一个脚本,可以帮助我连接到我的 ec2。但是,它不会运行指定的脚本文件。

awsconnect.sh:

ssh -i ".pemfile" ubuntu@"ec2-instance"


  ./data.sh

data.sh 是我在 aws-ec2 上的文件。

data.sh:

 mkdir -p dumps/$(date +"%Y%m%d");
    mysqldump -h localhost -port=3306 -u root -proot abc | gzip > dumps/$(date +"%Y%m%d")/abc.sql.gz;
    logout

如果我从 aws-ec2 命令行运行我的 data.sh 文件,它运行良好。 但是,它不是从我的脚本文件中运行的。 有什么问题?

【问题讨论】:

  • 那么使用这个文件“awsconnect.sh”你连接到实例,你如何从你的脚本运行“data.sh”文件?
  • 脚本正在等待ssh 命令完成并退出,然后它将在本地运行下一个命令。这显然不是你想要的。你必须将你想要的远程命令传入ssh 命令。有关解决方案,请参阅drawyupdrew 的答案。

标签: linux bash shell amazon-web-services amazon-ec2


【解决方案1】:

你可以通过 ssh 进入机器吗?如果是这样,那么您只需要确保脚本的所有权和权限都可以。然后你可以:

ssh -i key.pem ubuntu@ec2-instance "bash /path/to/your/script/data.sh"

但是,如果您的脚本中的内容需要 root 访问权限,那么您将需要权限。

编辑:正如@error2007s 提到的,我忘记在我的命令中指定身份文件。我已经编辑了命令,所以把它放在awsconnect.sh 中应该可以正常工作。

【讨论】:

  • @AmanSrivastava 等等,在你运行我发布的那个命令后,它让你登录到机器上?那不应该发生,我发布的命令应该在机器上运行脚本,而不是让你登录。你能发布更多信息,你会收到错误消息吗?尽可能多地发布信息,即将整个命令/命令行输出粘贴到您的帖子中。这里有很多人愿意提供帮助,但是当我们只知道“它不起作用”时,很难提供帮助:)
  • @drewyupdrew 我的实例上有一个名为 data.sh 的脚本文件,它是可执行的。上面给出了我的 data.sh 的脚本。当我从该实例运行它并创建我的数据库转储时,它工作正常。但是当我从我的机器上运行你的命令时,它给了我以下错误 - “权限被拒绝(公钥)”并且该机器上的脚本没有运行。谢谢你的帮助! :)
  • @drewyupdrew 您的回答表明从 Ec2 实例运行该命令用户想要从他的本地计算机运行该命令。
  • @AmanSrivastava 请将此命令添加到您的 awsconnect.sh "ssh -i key.pem ubuntu@ec2-instance "bash /path/to/your/script/data.sh""
  • 是的,如果默认密钥文件不正确,可能需要添加身份文件,如@error2007s 所述。 (@error2007s,您可能希望在整个命令周围使用反引号而不是双引号以避免混淆)
猜你喜欢
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
相关资源
最近更新 更多