Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 将cmd传递给子进程。检查_输出()_Python_Sockets_Subprocess - Fatal编程技术网

Python 将cmd传递给子进程。检查_输出()

Python 将cmd传递给子进程。检查_输出(),python,sockets,subprocess,Python,Sockets,Subprocess,程序在windows框内设置命令提示符,linux框可以使用该提示符执行windows命令。因此,在linux中打开cmd并键入dir以查看windows计算机上的文件后,我会触发异常: try块失败并传回异常字符串。如果我打印以查看raw_命令是什么:“内置函数dir” 当“\n”不在cmd\u缓冲区中时: 接收的字节数=客户端套接字.recv(1024) cmd_buffer+=接收的_字节。decode() 响应=运行命令(cmd\u缓冲区) 客户端_socket.send(str.enc

程序在windows框内设置命令提示符,linux框可以使用该提示符执行windows命令。因此,在linux中打开cmd并键入dir以查看windows计算机上的文件后,我会触发异常:

try块失败并传回异常字符串。如果我打印以查看raw_命令是什么:“内置函数dir”

当“\n”不在cmd\u缓冲区中时:
接收的字节数=客户端套接字.recv(1024)
cmd_buffer+=接收的_字节。decode()
响应=运行命令(cmd\u缓冲区)
客户端_socket.send(str.encode(响应))
#____在本地运行命令输出并将其发送回客户端____
def run_命令(命令):
原始命令=命令.rstrip('\n')
尝试:
输出=子进程。检查输出(raw\u命令,stderr=subprocess.STDOUT,shell=True)
除:
output=“命令失败\r\n”
返回输出

您的
运行\u命令
功能正常。因此,问题在于您将命令传递给它的方式。
但是,当使用
try…except
块时,可以检查打印该块时引发的异常

import subprocess

def run_command(command):
    raw_command = command.rstrip('\n')
    try:
        output = subprocess.check_output(raw_command, stderr=subprocess.STDOUT, shell=True)
    except subprocess.CalledProcessError as e:
        output = "Command failed because: " + e.output.decode()

    return output

print(run_command("ls"))

谢谢你,我会把它放进去,希望能更好地调试它。