当前位置: 首页 > 面试题库 >

在python中使用bash命令脚本

姬乐池
2023-03-14
问题内容

我有一个python脚本,该脚本在运行时会在终端上记录信息,我想将此记录信息发送到文本文件,

为了实现这一点,我正在插入文件

import subprocess
subprocess.call(['script', 'logfile'])

在文件末尾,我放入

subprocess.call(['exit'])

问题是当它调用第一个命令时script logfile,它将终止脚本,

提前感谢我如何做这项工作的任何建议


问题答案:

问题在于,subprocess.call直到script退出产生的外壳程序才返回,这时您的Python脚本将恢复。

执行所需操作的最简单方法是script使用Python脚本作为参数来调用自身。代替

#!/usr/bin/python

import subprocess

subprocess.call(['script', 'logfile'])

# Rest of your Python code

subprocess.call(['exit'])

您将使用

#!/usr/bin/python

import os
import sys

if '_underscript' not in os.environ:
    os.environ['_underscript'] = "yes"
    cmd_args = ['script', 'logfile', 'python'] + sys.argv
    os.execvp('script', cmd_args)

# Rest of your Python code

环境变量可防止您的脚本进入无限循环以重新运行自身script。当您运行Python脚本时,它首先会在其环境中检查尚不存在的变量。如果没有,它将设置该变量,然后运行script以重新运行Python脚本。execvp用对的调用替换您的脚本script;
Python脚本中没有其他内容可以执行。第二次脚本运行时,变量_underscript 确实
存在,这意味着将if跳过该块,并且脚本的其余部分将按预期运行。



 类似资料:
  • 问题内容: 我正在尝试使用命令记录bash会话。 该命令是从bash脚本开始执行的,但是一旦执行,bash脚本就会终止。 我尝试使用各种组合来始终以相同的结果调用命令(调用该命令后立即终止bash脚本)。我得到的输出如下: 我也尝试过最后用a来调用命令,但是再次失败了。 谁能告诉我如何从bash脚本调用命令? 谢谢 问题答案: 您的Shell脚本没有终止。它仍在运行。您会收到提示,因为正在生成新的

  • 问题内容: 我正在尝试使用bash脚本将JSON文件上传到我的noSQL数据库中,但是它不起作用,我也不明白为什么。 这是脚本: 这是错误: 当我执行命令行中给出的命令时,它仍然可以正常工作。 这是什么错误?谢谢 问题答案: 不要将命令存储在变量中;如果您绝对必须具有可用于日志记录的内容,请将 参数 放入数组中。

  • 问题内容: 我运行一个包含此行的python脚本 然后,我在服务器上运行相同的代码,并收到以下错误消息 因此,我要做的就是print bashCommand在运行之前,在终端中插入一个比命令更清晰的信息os.system()。 当然,我再次收到错误(由引起os.system(bashCommand)),但是在该错误出现之前,它会在终端中打印命令。然后我只是复制了输出,然后将复制粘贴到终端中,然后按

  • 问题内容: 对于那些想回复我应该使用SSH密钥的人,请弃权 我试图在bash脚本中使用Expect提供SSH密码。提供密码是可行的,但是我并没有像我应该的那样最终进入SSH会话,它将回溯到bash。 我的剧本: 我的脚本的输出: 我想拥有我的SSH会话,并且只有在退出该会话后才能返回我的bash脚本。我之所以使用bash,是因为我使用了可以选择要连接到的设备的菜单。 谢谢 问题答案: 混合bash

  • 我是bash的新手。当我尝试使用命令进行比较时,我遇到了如下问题: 在我的教程中,应该等于

  • 问题内容: 有没有办法从Python运行BASH内置命令? 我试过了: 及其许多变化。我想跑步还是。 问题答案: 我终于找到了可行的解决方案。 谢谢大家的投入。