मैं क्या करना चाहता हूँ

मैं एक टीमस्पीक सर्वर से एसएसएच कनेक्शन बनाना चाहता हूं। उस कच्चे कनेक्शन के साथ कंसोल से कमांड डालना और प्राप्त करना संभव होना चाहिए।

मैंने क्या किया

        $socket = @ssh2_connect($this->runtime['host'], $this->runtime['queryport']);

        if($socket === false)
        {
            $this->addDebugLog('Error: connection failed!');
            return $this->generateOutput(false, array('Error: connection failed!'), false);
        }
        else
        {
            if(@ssh2_auth_password($socket, $this->escapeText($username), $this->escapeText($password)))
            {
                if(($shell = @ssh2_shell($socket, "raw")) === false)
                {
                    return $this->generateOutput(false, array('Error: failed to open a secure shell on server!'), false);
                }
                else
                {
                    $this->runtime['ssh'] = $socket;
                    $this->runtime['socket'] = $shell;
                    @stream_set_timeout($this->runtime['socket'], $this->runtime['timeout']);
                    @stream_set_blocking($this->runtime['socket'], true);
                    return $this->generateOutput(true, array(), true);
                }
            }
            else
            {
                return $this->generateOutput(false, array('Error: invalid loginname or password!'), false);
            }
        }

क्या गलत है

@stream_set_blocking($this->runtime['socket'], true); इस लाइन के कारण मेरी स्क्रिप्ट टाइमआउट में चल रही है। इसके अलावा मुझे कुछ समस्या है कि हमेशा एक खाली परिणाम लौटाता है। क्या मैंने कुछ गलत किया?

0
Lukas Gund 27 सितंबर 2018, 22:17

1 उत्तर

सबसे बढ़िया उत्तर

संकट

मुझे यहां एक टाइमआउट मिला है क्योंकि स्ट्रीम बंद होने तक प्रतीक्षा कर रही है।

समाधान

अगर मैं अपने पढ़ने और लिखने के सामान के बाद स्ट्रीम बंद कर देता हूं तो मुझे मेरा जवाब मिल गया।

                    @stream_set_timeout($this->stream, intval($this->runtime['timeout']));
                    @stream_set_blocking($this->stream, true);
                    echo fgets($this->stream);
                    echo fgets($this->stream);
                    fwrite($this->stream, 'quit' . "\n");
                    $this->runtime['socket'] = $socket;
                    return $this->generateOutput(true, array(), true);
0
Lukas Gund 2 अक्टूबर 2018, 11:46