我如何以 root 身份在 python 脚本中运行命令?

问题描述

我有一个 python 脚本来进行 TCP 扫描。我使用的是 python3_nmap 库,所以命令如下:

import nmap3
nmap.nmap_syn_scan(self.ip,"-p 443 -v -T4")

每次我需要输入密码时,如何将代码更改为不要求我输入密码?

  • 我不需要更改整个 python 脚本的权限,因为我只是在机器人框架中调用其中的一个函数,所以我应该以某种方式忽略为那个特殊的子进程输入密码!

解决方法

这里需要一些自动化。 Pexpect 是一个不错的选择。 您必须以适当的权限运行您的 python 脚本。授予执行权限可以像这样自动化:

import pexpect
child = pexpect.spawn('sudo python <path_to_your_python_script>')  # make sure about environment
child.expect('password')  # wait to read password string in terminal
child.sendline('<your_password_here>')  # enter user password