Şu anda PHP bir dağıtım çerçeve yazıyorum. Çerçeve sunucularına bağlanır ve üzerinde SSH komutları yürütür. Ben daha iyi yapmak için PHP bir yol bulmaya çalışırken oldukça bir süre için arıyordum ettik. İşte gereksinimleri vardır. Teknik gerekir:
Programlı SSH şifreyi girin. Ben SSH tuşlarını kullanarak parola-az SSH oturumları istiyorum gitmek, ama hatırlamak için bir yol olduğunu biliyoruz, bu bir dağıtım çerçevedir. Bu potansiyel bir defada 25 sunuculara dağıtmak olabilir. Bu kullanıcı framework kullanmak SSH anahtarları kurdunuz gerektiren doğru görünmüyor, ve kim onların şifreyi 25 kez girmek istiyor? Ben burada bir model olarak Capistrano kullanıyorum - bu kullanıcı tekrar sormadan SSH bağlantıları kurmak için kullanır, sonra bir kez şifre sorar. Ben sadece (sessizce) bir kere girilir ve dağıtmak görevler bitmiş kadar kullanılan şifreleri dağıtmak komut saklanır demiyorum.
PHP script çıktı gönderin. Bunu değiştirmek, bağımsız SSH oturumları her birinden terminal çıkışını durdurmak mümkün olmak istiyorum, daha sonra görmek için kullanıcı için terminale geri gönderebilir. Bu şekilde, ben neler göstermek için çıktı her satırın üzerine sunucunun adını Önlerine.
Write (yanı sıra okuma) terminaline erişim sağlayın. Bu kullanıcı (veya komut dosyası) sadece SSH şifre yanı sıra terminal içine diğer bilgileri girmek mümkün olması önemlidir.
Destek SSH v2.
Şu anda, benim çerçeve dev bir dizeye dağıtmak script komutları "derler" ve SSH komutunu kullanarak bunları yürütür. Her son dağıtmak komut şuna benzer:
ssh -t -t -p 12345 user@server.com 'command1; command2;'
Bu SSH komutları her PHP'nin yerleşik passthru
fonksiyonu aracılığıyla yürütülür:
<?php passthru("ssh -t -t -p 12345 user@server.com 'command1; command2;'"); ?>
Ben proc_open kullanan ve neredeyse tüm PHP'nin diğer komut yürütme fonksiyonlarının boşuna denedim - bunların hiçbiri yukarıda listelenen tüm işlevleri sağlar. Buna ek olarak, ben de boşuna, birkaç saf PHP SSH uygulamaları denedim. Kütüphaneler terminaline yazma erişimi kaynağı yok veya SSH v2 desteği yok ya.
Bu konuda herhangi bir yardım büyük takdir - teşekkür peşin!