我想以编程方式启动 Amazon EC2 实例,使用 cloud-init 执行 Python 脚本,然后让相同的脚本终止实例。一切正常,除了自我终止部分。我试过这个:
os.system('sudo shutdown now -P')
和这个:
os.system('sudo -n shutdown now -P')
还有这个:
os.popen('sudo -S shutdown now -P')
不好。在所有情况下,/var/log/cloud-init.log
文件都显示sudo: sorry, you must have a tty to run sudo
.
显然,注释掉这Default requiretty
行就/etc/sudoers
可以了,但我想以编程方式做事,所以我想这不是一个选择(而且它可能也需要 root 权限,这让我们回到了原点)。
我想我可以使用一个多部分的 cloud-init 脚本——比如说,在 Python 脚本之后使用一个 bash 脚本来执行自终止。但是肯定有一种方法可以在 Python 中解决这个问题吗?
(亚马逊 Linux。Python 2.7.5。Boto 2.23)