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!