php使用ssh2来操作服务器执行命令
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-12-25 09:02:21
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
方法一(推荐)
private function runSSH($cmdstr) { //服务器信息 $host = '172.18.0.1'; $user = 'root'; $passwd = 'yB1TYzIZhWrn19zV'; //链接远程服务器 $connection = @ssh2_connect($host, 22); if (!$connection) { return ''; die('Connection failed.'); } //可否通过密码连接 $auth_methods = ssh2_auth_none($connection, $user); if (!in_array('password', $auth_methods)) { return ''; die('Unable to login to remote server by password.'); } //验证密码 if (!ssh2_auth_password($connection, $user, $passwd)) { return ''; die('Password error.'); } $stream = ssh2_exec($connection, $cmdstr); stream_set_blocking($stream, true); $str = stream_get_contents($stream); fclose($stream); return $str; }
方法二
//服务器信息 $host = '10.10.10.10'; $user = 'root'; $passwd = 'dD*********JWv07G'; //链接远程服务器 $connection = @ssh2_connect($host, 22); if (!$connection) { die('Connection failed.'); } //可否通过密码连接 $auth_methods = ssh2_auth_none($connection, $user); if (!in_array('password', $auth_methods)) { die('Unable to login to remote server by password.'); } //验证密码 if (!ssh2_auth_password($connection, $user, $passwd)) { die('Password error.'); } $shell = ssh2_shell($connection, 'xterm'); //由于一些模糊的原因,在命令之后,您需要睡眠以确保命令已经到达服务器并正在运行 //上面是其它人测试时加的,我测试后发现不睡眠也可以取到信息,这里标记一下 //sleep(2); fwrite($shell, 'ls -al' . PHP_EOL); //sleep(5); while ($line = fgets($shell)) { echo $line . '<br />'; }