如何存储bash命令的输出?

时间:2016-03-18 16:54:36

标签: python bash python-3.x

我需要编写一个简单的python(python3)脚本来将我的本地IP地址存储在变量中以便以后操作它,我读了很多但我不明白我在做什么这里错误的是一大堆代码,以便更好地理解..

#!/usr/bin/env pyhton3
import os
import subprocess
import sys
import fileinput
localip = subprocess.call(["ifconfig | grep 'inet addr' | cut -d ':' -f2 | grep 'Bcast' | cut -d ' ' -f1"], shell=True)
print localip
...
...
...

现在,当我执行它时,它会打印出来:

pi@raspberrypi:~/Documents $ python change.py
192.168.1.6
0

似乎我无法自己找到解决方案,有人能告诉我哪里出错并帮助我吗?感谢。

2 个答案:

答案 0 :(得分:2)

要解决您的XY Problem,为什么不使用Python本身来获取您的IP /主机名?

>>> import socket
>>> socket.gethostname()
'MY-COMPUTER'
>>> socket.gethostbyname(socket.gethostname())
'192.168.1.126'
>>> socket.getfqdn()
'my-computer.local'
>>> socket.gethostbyname(socket.getfqdn())
'192.168.1.126'

答案 1 :(得分:1)

在python2中,您可以:

stdout = subprocess.check_output(args, shell=true)

在python3中,你也可以这样做:

completed_process = subprocess.run(args, shell=True)
stdout = completed_process.stdout

哪个可能是更有用的界面