怎样才能让python 脚本像shell命令一样直接运行并可以接收参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样才能让python 脚本像shell命令一样直接运行并可以接收参数相关的知识,希望对你有一定的参考价值。

参考技术A

调用带参数的脚本,需要首先设置,举例如下:

test.py按行解释如下:


    脚本中有汉字的话,需要声明文件编码格式;
    导入sys模块,这个模块是用来获取参数列表的;
    sys.argv是一个列表,第一个是文件名,之后依次是参数列表;
    打印输出,这一步不需要多讲;
    保存到c:\\users\\C\\Desktop\\test.py;

调用操作步骤:

    打开命令行;
    输入python 文件名 第一个参数 第二个参数.....(参数之间用空格区分);
    一定要注意参数个数,要以文件名开始。

本回答被提问者采纳

如何从需要SUDO的php调用shell脚本?

我有一个文件是一个bash脚本,需要SUDO才能工作。

我可以使用SUDO从命令行运行它但我会被提示输入SUDO密码。

我想通过shell_exec从php运行这个脚本,但是如果我调用SUDO,它不像命令行,我可以提示输入密码。有没有办法通过sudo调用传递sudo的密码?

我怎样才能做到这一点?

答案

编辑sudoers文件(使用visudo)并添加允许Web服务器用户在没有密码的情况下运行命令的规则。例如:

www-data ALL=NOPASSWD: /path/to/script
另一答案

这个问题有各种解决方案。

  • 首先,考虑更改脚本权限,如果您想要sudo的原因只是一个权限问题(请参阅我在上面的问题中添加的注释)。
  • 另一种方法是使用setuid bit。 [编辑:看起来setuid与脚本不兼容。有关解释,请参阅this link。]
  • 第三种但非常不安全的方法是从密码文件中读取密码。警告:这是非常不安全的,如果有任何其他可能性,请不要这样做。如果您这样做,请尝试将密码文件隐藏在文件夹层次结构中的某个位置。 <?php shell_exec('sudo -u root -S bash script.sh < /home/[user]/passwordfile'); ?>
  • 第四种可能性是在sudoers文件中使用NOPASSWD tag。您应该将此功能限制为您需要的特定命令。
另一答案

你可以在sudoers文件中添加这样的东西:

username ALL=NOPASSWD: /path/to/script

这将允许特定用户在该特定脚本上调用sudo而不会提示输入密码。

另一答案

最安全的方法是使用crontab。即将所有命令保存在数据库中,例如,mysql表并创建一个cronjob来读取这些mysql entreis并通过shell_exec()执行。请阅读此link以获取更多详细信息。

  * * * * * killProcess.php

以上是关于怎样才能让python 脚本像shell命令一样直接运行并可以接收参数的主要内容,如果未能解决你的问题,请参考以下文章

如何使 Python 脚本像 Linux 中的服务或守护程序一样运行

如何从需要SUDO的php调用shell脚本?

linux中怎样开机启动python程序

怎样让Python脚本与C++程序互相调用

使用 execvp() 执行 shell 命令

如何像开发人员命令提示符一样配置 VS Code shell?