如何在pythonscrip上运行advancelinux命令

2024-06-16 13:01:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到以下linux命令的字符串输出

systemctl show node_exporter |grep LoadState| awk '{split($0,a,"="); print a[2]}'

我试过了

import subprocess
output = subprocess.check_output("systemctl show node_exporter |grep LoadState| awk '{split($0,a,"="); print a[2]}'", shell=True)

但结果是, output=subprocess.check_output(“systemctl show node|u exporter | grep LoadState | awk'{split($0,a,“=”);打印[2]}'(shell=True) SyntaxError:关键字不能是表达式


Tags: nodetrueoutputlinuxcheckshowshellgrep
2条回答

首先,函数将字符串列表作为命令,而不是单个字符串。例如:

"ls -a -l" - wrong
["ls", "-a", "-l"] - good

其次。如果linux命令非常复杂或包含很多行,那么创建一个单独的bash文件(例如command.sh)是有意义的,将linux命令放在那里,并使用以下命令从python运行脚本:

import subprocess
output = subprocess.check_output(["./command.sh"], shell=True)

您需要转义双引号(因为它们指示字符串的开始/结束):

import subprocess
output = subprocess.check_output("systemctl show node_exporter |grep LoadState| awk '{split($0,a,\"=\"); print a[2]}'", shell=True)

相关问题 更多 >