我正在尝试从我的 Python(版本 2.6.5)代码中运行 shell 命令,但它生成的输出与在 shell(bash)中运行的相同命令不同:
重击:
~> ifconfig eth0 | sed -rn 's/inet addr:(([0-9]{1,3}\.){3}[0-9]{1,3}).*/\1/p' | sed 's/^[ \t]*//;s/[ \t]*$//'
192.168.1.10
Python:
>>> def get_ip():
... cmd_string = "ifconfig eth0 | sed -rn \'s/inet addr:(([0-9]{1,3}\.){3}[0-9]{1,3}).*/\1/p' | sed 's/^[ \t]*//;s/[ \t]*$//\'"
... process = subprocess.Popen(cmd_string, shell=True, stdout=subprocess.PIPE)
... out, err = process.communicate()
... return out
...
>>> get_ip()
'\x01\n'
我的猜测是,在 python 中运行时,我需要以某种方式转义引号,但我不知道该怎么做。
注意:我无法在需要运行此代码的机器上安装其他模块或更新 python。它需要与 Python 2.6.5 和标准库一起工作。