مكتبة PHP التي توفر غلافًا موجهًا للكائنات للاتصال بـ SSH وتشغيل أوامر shell بامتداد php ssh2.
أفضل طريقة لإضافة المكتبة إلى مشروعك هي استخدام الملحن.
composer require faraweilyas/ sshbunnyأو
git clone https://github.com/faraweilyas/sshbunny.git يأخذ منشئ sshbunny أربع معلمات ولكل منها قيم افتراضية $method='local' , $authType=NULL , $host=NULL , $port=22 , $username=NULL
$method على local أو remote ، وسيقوم local بتنفيذ الأوامر على الصدفة الخاصة بك دون الاتصال بالإنترنت بينما ينفذ remote الأوامر على الخادم البعيد الذي تتصل به بناءً على التكوين الخاص بك.$authType على KEY أو PASSWORD أو KEY_PASSWORD ، ويستخدم KEY و KEY_PASSWORD ssh2_auth_pubkey_file، والفرق هو عندما تقوم بتعيين $authType='KEY_PASSWORD' ssh2_auth_pubkey_file يأخذ المعلمة الأخيرة لكلمة المرور والتي ستكون مطلوبة الآن ويستخدم PASSWORD ssh2_auth_password.$port على منفذ الخادم الخاص بك إذا كنت متصلاً بخادم بعيد.$username على اسم مستخدم الخادم الخاص بك. إذا كنت تقوم بتعيين طريقة الاتصال على $method='remote' و $authType = KEY || KEY_PASSWORD يعني أنك ستحتاج إلى تعيين ملف المفتاح العام والخاص والذي يمكنك القيام به باستخدام أدوات الضبط sshbunny التي تحتوي على $ sshbunny ->setKeys('public_key.pub', 'private_key') قبل التهيئة.
سيتم تشغيل هذا محليًا فقط حيث تم ضبط طريقة الاتصال على local
<?php
use sshbunny sshbunny ;
require_once ' vendor/autoload.php ' ;
// ->getData() will return output of command executed while ->getData(TRUE) will dispay the output
$ sshbunny = ( new sshbunny ( ' local ' ))
-> initialize ()
-> exec ( " echo 'Hello World' " )
-> getData ( TRUE ); سيؤدي هذا إلى الاتصال بخادم بعيد حيث تم تعيين طريقة الاتصال على remote وتعيين نوع المصادقة على KEY
<?php
use sshbunny sshbunny ;
require_once ' vendor/autoload.php ' ;
defined ( ' TEST_HOST ' ) ? NULL : define ( ' TEST_HOST ' , " 138.222.15.1 " );
defined ( ' PORT ' ) ? NULL : define ( ' PORT ' , " 22 " );
defined ( ' USERNAME ' ) ? NULL : define ( ' USERNAME ' , " ubuntu " );
defined ( ' PUBLIC_KEY ' ) ? NULL : define ( ' PUBLIC_KEY ' , ' id_ssl.pub ' );
defined ( ' PRIVATE_KEY ' ) ? NULL : define ( ' PRIVATE_KEY ' , ' id_ssl ' );
$ sshbunny = ( new sshbunny ( ' remote ' , ' KEY ' , HOST , PORT , USERNAME ))
-> setKeys ( PUBLIC_KEY , PRIVATE_KEY )
-> initialize ()
-> exec ( " echo 'Hello World' " )
-> getData ( TRUE ); يمكن أن يستغرق تنفيذ الأمر أوامر متعددة أو يمكنك ربط طريقة exec بطريقة exec أخرى
$ sshbunny = ( new sshbunny ( ' remote ' , ' KEY ' , HOST , PORT , USERNAME ))
-> setKeys ( PUBLIC_KEY , PRIVATE_KEY )
-> initialize ()
// Multiple commands
-> exec ( " echo 'Hello World' " , " cd /var/www/html " )
// Method chaining
-> exec ( " ls -la " )
-> getData ( TRUE ); // Will return the result of executed command output
$ sshbunny
-> exec ( " ls -la " )
-> getData ();
// Will display the result of executed command output
$ sshbunny
-> exec ( " ls -la " )
-> getData ( TRUE ); // Will clear the first executed command output and return the next executed command output
$ sshbunny
-> exec ( " ls -la " )
-> clearData ()
-> exec ( " whoami " )
-> getData ( TRUE ); // Will run the commands provided and display the result then disconnect from the server
$ sshbunny
-> exec ( " ls -la " , " whoami " )
-> getData ( TRUE )
-> disconnect ();