Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调用的进程错误:命令';(';grep';';route';)';返回非零退出状态1_Python_Linux_Bash - Fatal编程技术网

Python 调用的进程错误:命令';(';grep';';route';)';返回非零退出状态1

Python 调用的进程错误:命令';(';grep';';route';)';返回非零退出状态1,python,linux,bash,Python,Linux,Bash,蟒蛇3 OSX 10.13.2 我正在尝试制作FACEBOOK\u白名单,以防止在收听webhook 我正在获取IP地址。该命令非常简单,只需whois、pipe和grep 问题: def test(): import subprocess ps = subprocess.Popen( ["whois", "-h", "whois.radb.net", "--", "'-i origin AS32934'"], stdout=subprocess.

蟒蛇3
OSX 10.13.2

我正在尝试制作
FACEBOOK\u白名单
,以防止在收听
webhook

我正在获取IP地址。该命令非常简单,只需
whois
pipe
grep

问题:

def test():
    import subprocess
    ps = subprocess.Popen(
        ["whois", "-h", "whois.radb.net", "--", "'-i origin AS32934'"],
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT
    )
    output = subprocess.check_output(('grep', 'route'), stdin=ps.stdout)
    ps.wait()
---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
<ipython-input-28-8d5c434d09bd> in <module>()
      5     stderr=subprocess.STDOUT
      6 )
----> 7 output = subprocess.check_output(('grep', 'route'), stdin=ps.stdout)
      8 ps.wait()

~/.pyenv/versions/3.6.4/lib/python3.6/subprocess.py in check_output(timeout, *popenargs, **kwargs)
    334
    335     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
--> 336                **kwargs).stdout
    337
    338

~/.pyenv/versions/3.6.4/lib/python3.6/subprocess.py in run(input, timeout, check, *popenargs, **kwargs)
    416         if check and retcode:
    417             raise CalledProcessError(retcode, process.args,
--> 418                                      output=stdout, stderr=stderr)
    419     return CompletedProcess(process.args, retcode, stdout, stderr)
    420

CalledProcessError: Command '('grep', 'route')' returned non-zero exit status 1.
回溯:

def test():
    import subprocess
    ps = subprocess.Popen(
        ["whois", "-h", "whois.radb.net", "--", "'-i origin AS32934'"],
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT
    )
    output = subprocess.check_output(('grep', 'route'), stdin=ps.stdout)
    ps.wait()
---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
<ipython-input-28-8d5c434d09bd> in <module>()
      5     stderr=subprocess.STDOUT
      6 )
----> 7 output = subprocess.check_output(('grep', 'route'), stdin=ps.stdout)
      8 ps.wait()

~/.pyenv/versions/3.6.4/lib/python3.6/subprocess.py in check_output(timeout, *popenargs, **kwargs)
    334
    335     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
--> 336                **kwargs).stdout
    337
    338

~/.pyenv/versions/3.6.4/lib/python3.6/subprocess.py in run(input, timeout, check, *popenargs, **kwargs)
    416         if check and retcode:
    417             raise CalledProcessError(retcode, process.args,
--> 418                                      output=stdout, stderr=stderr)
    419     return CompletedProcess(process.args, retcode, stdout, stderr)
    420

CalledProcessError: Command '('grep', 'route')' returned non-zero exit status 1.
第二个是将字符串拆分为多个双引号字符串

In [48]: ps = subprocess.Popen(["whois", "-h", "whois.radb.net", "--", "'-i", "origin", "AS32934'"])

In [49]: %  No entries found for the selected source(s).
%  No entries found for the selected source(s).
%  No entries found for the selected source(s).
我错在哪里

更新:
@让·弗朗索瓦·法布

In [49]: ps = subprocess.Popen(["whois", "-h", "whois.radb.net", "--", "-i", "origin", "AS32934"])

In [50]: %% Attribute name after "-i" is invalid or unsupported.


%  No entries found for the selected source(s).
aut-num:    AS32934
as-name:    Facebook
descr:      Facebook
member-of:  AS-FACEBOOK
import:     from AS-ANY   accept ANY AND NOT {0.0.0.0/0}
export:     to AS-ANY   announce AS-FACEBOOK AND NOT {0.0.0.0/0}
admin-c:    FBNetEng
tech-c:     FBNetEng
notify:     noc@fb.com
mnt-by:     MAINT-AS32934
changed:    vvasilev@fb.com 20170627  #21:09:05Z
source:     RADB
参考文献:

您尝试引用最后一个aegument与
Popen
所做的引用是多余的。我无法测试,但您必须删除您插入的额外引号:

ps = subprocess.Popen(["whois", "-h", "whois.radb.net", "--", "-i origin AS32934"])
Popen
检测参数中是否有空格,并在需要时自动将其引用。添加更多引号会使
Popen
添加更多引号,并且命令的参数是错误的

除非您需要分别传递每个参数,但这样做的尝试也会失败,因为您在第一个和最后一个参数中留下了引号。但这并不能解决问题:

ps = subprocess.Popen(["whois", "-h", "whois.radb.net", "--", "'-i", "origin", "AS32934'"]# Wrong
应该是

ps = subprocess.Popen(["whois", "-h", "whois.radb.net", "--", "-i", "origin", "AS32934"]

它在“-i”之后出现了
%%属性名,该属性名无效或不受支持。
但它有输出列表。这一行有什么想法吗?当我把它与完整的程序导入子进程ps=subprocess.Popen([“whois”、“-h”、“whois.radb.net”、“-”、“-I origin AS32934”]、stdout=subprocess.PIPE、stderr=subprocess.stdout)output=subprocess.check\u output(‘grep’、‘route’、stdin=ps.stdout)ps.wait()放在一起时,这一行就不见了非常感谢:+1