मैं एसएसएच पर एक php स्क्रिप्ट के भीतर रिमोट कमांड निष्पादित करने का प्रयास कर रहा हूं, और मैं चाहता हूं कि कमांड (stdout और stderr) से आउटपुट को मूल होस्ट में स्ट्रीम किया जाए।मैं एसएचएस के माध्यम से PHP में रिमोट कमांड कैसे निष्पादित कर सकता हूं?
मुझे पर्ल और रूबी में पता है यह संभव है। मुझे php में ऐसे कोई उदाहरण नहीं मिल सका।
कोड:
$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;
}
}
}
}
लेकिन जब मैंने उसे यह $php remote.php
तरह अमल, मैं कोई त्रुटि मिलती है:
PHP Fatal error: Call to undefined function ssh2_connect()
in /home/tester/PHP_SSH2/remote.php on line 6
ssh के माध्यम से PHP में दूरदराज के आदेश पर अमल करने के लिए सबसे अच्छा तरीका क्या है?
ऐसा लगता है कि आप PECL SSH2 पैकेज स्थापित नहीं किया है। –
मैंने एसएसएच 2 स्थापित करने का प्रयास किया, @ http://www.php.net/manual/en/ssh2.installation.php सुडो pecl इंस्टॉल ssh2 चैनल: //pecl.php.net/ssh2-v यहां है स्टउट: पसंदीदा स्थिति "स्थिर" के भीतर pecl/ssh2 डाउनलोड करने में विफल, नवीनतम रिलीज संस्करण 0.11.2 है, स्थिरता "बीटा", "चैनल: //pecl.php.net/ssh2-0.11.2" को स्थापित करने के लिए उपयोग करें parsePackageName(): "संस्करण" न तो वैध संस्करण है और न ही "चैनल: //pecl.php.net/ssh2-version" अवैध पैकेज नाम/पैकेज फ़ाइल "चैनल: //pecl.php.net में एक वैध स्थिति है/ssh2-version " इंस्टॉल विफल हुआ और यदि मैं स्रोत से कोशिश करता हूं लेकिन कॉन्फ़िगरेशन एमएम – kamal