可以在python中生成可执行的shell脚本吗?

时间:2014-05-27 21:39:11

标签: python linux shell variables unix

我正在尝试创建一个脚本,使用用户确定的密码安装和配置多个程序,如phpmyadmin。为了确保用户的密码安全,我打算使用用户输入的密码生成下面的shell脚本,将其传递给脚本进行输出,并在脚本运行完毕后销毁脚本以确保密码的完整性。问题是,我不确定如何在python代码中创建shell脚本。

脚本:

echo phpmyadmin phpmyadmin/dbconfig-install boolean true | debconf-set-selections
echo phpmyadmin phpmyadmin/app-password-confirm password pwd | debconf-set-selections
echo phpmyadmin phpmyadmin/mysql/admin-pass password pwd| debconf-set-selections
echo phpmyadmin phpmyadmin/mysql/app-pass password pwd| debconf-set-selections
echo phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2 | debconf-set-selections
echo phpmyadmin phpmyadmin/upgrade-backup boolean true | debconf-set-selections

2 个答案:

答案 0 :(得分:1)

您可以将可执行文件生成为任何其他文本文件。

要使真正可执行,你要么必须为它设置可执行权限,要么使用像

这样的解释器来调用它
$ source yourscriptfile

顺便说一下 - 将密码写入文件并不是很安全,想象一下,你的清理代码会崩溃而不会删除文件。

通常可以通过将密码设置为系统变量并在脚本中引用该变量来解决此问题。

Python允许执行脚本(参见subprocess)和操纵环境变量。

答案 1 :(得分:1)

这样做的一般方法是在文件的开头添加#!shebanghashbang)指令,以便shell知道在哪里找到运行时的运行时要求。文件。例如,python脚本需要知道在你的envorinment中找到python的位置,所以你可以添加:

#!/usr/bin/env python

作为python脚本中的第一行。然后确保添加脚本或将其安装在系统$PATH中的某个位置,或者只是对脚本进行相对/绝对引用。您通常还需要确保脚本具有可执行权限,以便您可以在没有权限错误的情况下运行它。

有关使用/usr/bin/env python的原因的更多信息,请参阅this答案,而不是python运行时的直接路径。