Tôi đang cố gắng thực hiện các lệnh từ xa từ bên trong tập lệnh php trên ssh và tôi muốn đầu ra từ các lệnh (stdout và stderr) được phát trực tuyến tới máy chủ gốc.Làm cách nào để thực hiện các lệnh từ xa trong PHP qua ssh?
Tôi biết trong Perl và Ruby điều này là có thể. Tôi không thể tìm thấy bất kỳ ví dụ như vậy trong php.
Code:
$ip = 'kssotest.yakabod.net';
$user = 'tester';
$pass = 'kmoon77';
$connection = ssh2_connect($ip);
ssh2_auth_password($connection,$user,$pass);
$shell = ssh2_shell($connection,"bash");
$cmd = "echo '[start]';your commands here;echo '[end]'";
$output = user_exec($shell,$cmd);
fclose($shell);
function user_exec($shell,$cmd) {
fwrite($shell,$cmd . "\n");
$output = "";
$start = false;
$start_time = time();
$max_time = 2; //time in seconds
while(((time()-$start_time) < $max_time)) {
$line = fgets($shell);
if(!strstr($line,$cmd)) {
if(preg_match('/\[start\]/',$line)) {
$start = true;
}elseif(preg_match('/\[end\]/',$line)) {
return $output;
}elseif($start){
$output[] = $line;
}
}
}
}
Nhưng khi tôi thực hiện nó như $php remote.php
này, tôi nhận được một lỗi:
PHP Fatal error: Call to undefined function ssh2_connect()
in /home/tester/PHP_SSH2/remote.php on line 6
cách tốt nhất để thực hiện các lệnh từ xa trong PHP qua ssh là gì?
Dường như bạn chưa cài đặt gói PECL SSH2. –
tôi đã cố gắng cài đặt SSH2, @ http://www.php.net/manual/en/ssh2.installation.php sudo pecl install ssh2 kênh: //pecl.php.net/ssh2-v Đây là stout: Không thể tải xuống pecl/ssh2 trong trạng thái ưa thích "ổn định", bản phát hành mới nhất là phiên bản 0.11.2, ổn định "beta", sử dụng "channel: //pecl.php.net/ssh2-0.11.2" để cài đặt parsePackageName(): "phiên bản" không phải là phiên bản hợp lệ cũng như trạng thái hợp lệ trong "kênh: //pecl.php.net/ssh2-version" tên gói/tệp gói không hợp lệ "kênh: //pecl.php.net/ssh2-version " cài đặt không thành công và nếu tôi thử từ nguồn nhưng không thể tìm ra cách biên dịch config.m4 – kamal