如何在Python脚本中替换Nessus命令的HOSTID为主机名?
解决Nessus代理链接命令的主机名替换问题
没问题,我来帮你把手动执行的Nessus代理链接命令转换成可移植的Python脚本,自动用主机名替换HOSTID。这里是完整的实现方案:
完整Python脚本
import platform import subprocess def link_nessus_agent(): # 获取当前机器的主机名 host_id = platform.node() # 构建Nessus代理链接命令,用主机名替换HOSTID nessus_command = [ 'sudo', '/library.nessusagent.run.sbin.nessuscli', 'agent', 'link', '--key=5e30508800865f87a8dbe8993fa75d21f9e2acc7db12165050cf48b5ccbafb84', f'--name={host_id}', '--groups=Mac_OS_Systems', '--Host=Cloud.tenable.com', '--port=443' ] try: # 执行命令并捕获输出 result = subprocess.run(nessus_command, check=True, capture_output=True, text=True) print("Nessus代理链接成功!输出信息:") print(result.stdout) except subprocess.CalledProcessError as e: print("链接失败,错误信息:") print(e.stderr) if __name__ == "__main__": link_nessus_agent()
关键步骤解释
- 获取主机名:用你已经找到的
platform.node()方法,它会返回当前机器的主机名,完美替代命令里的HOSTID。 - 构建命令:我把命令拆成了列表形式(subprocess推荐的安全写法),用f-string把
host_id插入到--name参数里,这样能避免字符串拼接的安全问题。 - 执行命令:用
subprocess.run()执行命令,check=True会在命令执行失败时抛出异常,capture_output=True可以捕获命令的输出和错误信息,方便调试。
注意事项
- 运行这个脚本时必须用sudo权限,因为命令里包含
sudo,否则会报错权限不足。 - 如果你的NessusCLI路径实际是
/Library/NessusAgent/run/sbin/nessuscli(看起来可能是输入时的标点错误),记得修改命令里的路径。
内容的提问来源于stack exchange,提问作者Alan Inman
相关产品推荐
相关产品推荐

