php调用ssh命令,如何通过ssh在PHP中执行远程命令?

搜索热词

我试图通过ssh在PHP脚本中执行远程命令,我希望将命令(stdout和stderr)的输出流式传输到原始主机.

我知道在Perl和Ruby中这是可能的.我在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中执行远程命令的最佳方法是什么?

如果由于繁文缛节而无法添加PHP包,这里有一个简单的类可以解决问题

class ExecuteRemote

{

private static $host;

private static $username;

private static $password;

private static $error;

private static $output;

public static function setup($host,$username=NULL,$password=NULL)

{

self::$host = $host;

self::$username = $username;

self::$password = $password;

}

public static function executeScriptSSH($script)

{

// Setup connection string

$connectionString = self::$host;

$connectionString = (empty(self::$username) ? $connectionString : self::$username.'@'.$connectionString);

// Execute script

$cmd = "ssh $connectionString $script 2>&1";

self::$output['command'] = $cmd;

exec($cmd,self::$output,self::$error);

if (self::$error) {

throw new Exception ("\nError sshing: ".print_r(self::$output,true));

}

return self::$output;

}

}

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值