Nasıl bir interaktif SSH oturumu kurmak için PHP kullanabilirsiniz?

0 Cevap php

Mac OS X 10.6 üzerinde komut satırı üzerinden PHP kullanarak bir uzak sunucuda bir interaktif SSH bağlantısı kurmaya çalışıyorum. Şu anda aşağıdaki komutu çalıştırmak için PHP'nin proc_open işlevini kullanarak ediyorum:

ssh -t -t -p 22 user@server.com

Bu, hemen hemen çalışır. -t -t seçenekleri neredeyse yapmak bir uçbirimsi zorlamak gerekiyor. Ben girmek SSH şifre ve girmek mümkün duyuyorum. Ancak, enter tuşuna basarak sonra terminal sadece askıda görünüyor. Hiçbir çıkış, hiçbir şey - SSH oturumu başarısız oldu sanki bu. Ben komutları veya çalıştırmak şey ve Ctrl + C kullanarak her şeyi öldürmek olamaz Ben ssh -t -t -p 22 user@server.com "ls -la" gibi bir komut çalıştırmak ve doğru çıktı alabilirsiniz çünkü oturum açma başarılı olduğunu biliyorum.

Ben sorun benim proc_open çağrısı standart borular kullanılarak olduğu gerçeği ile ilgili olması gerektiğini düşünüyordu, bu yüzden pty'li ile değiştirilir. Ben şu hatayı alıyorum: "Pty sözde terminali bu sistemde desteklenmiyor ..."

Mac OS X sadece Pty veya sahte terminalleri desteklemiyor? (Ben tüm bu kabuk terminolojiyi kullanarak oldukça yeniyim).

Burada PHP kodu:

$descriptorspec = array(0 => array("pty"), 1 => array("pty"), 2 => array("pty"));  
$cwd = getcwd();  
$process = proc_open('ssh -t -t -p 22 user@server.com', $descriptorspec, $pipes, $cwd);  
if (is_resource($process))  
{  
    while (true)  
    {  
        echo(stream_get_contents($pipes[1]));  
        $status = proc_get_status($process);  
        if (! $status["running"])  
            break;  
    }  
} 

(Üzgünüz - benim yaşam için ... SO biçimlendirme talimatlarını oluyor bilemiyorum)

Ben yanlış ne yapıyorum? Neden pty kullanamıyorum? Bu Mac OS X üzerinde sadece imkansız mı? Yardımlarınız için teşekkürler!

0 Cevap