首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从ssh到vyos路由器并获得配置的ssh2_exec环境

尝试从ssh到vyos路由器并获得配置的ssh2_exec环境
EN

Stack Overflow用户
提问于 2014-08-17 15:38:11
回答 1查看 1.3K关注 0票数 1

我正在编写一个php脚本,通过ssh连接到vyos路由器,并使用命令备份配置。

show configuration commands

当我从命令提示符连接时,这个操作就像预期的那样。

代码语言:javascript
复制
ssh vyos@1.1.1.99
Password: ****
$ show configuration

interfaces {
...

但是这里有一个我的脚本,我试图使用php做同样的事情。

代码语言:javascript
复制
<?php
//Connect to VyOS virtual router and backup config

$host = '192.168.171.50';
$user = 'vyos';
$pass = 'vyos';

$connection = ssh2_connect($host, 22 );
if (!$connection) die('Connection failed');

if (ssh2_auth_password($connection, $user, $pass)) {
  echo "Authentication Successful!\n";
} else {
  die('Authentication Failed...');
}

$stream = ssh2_exec($connection, 'show configuration' );
$errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);

// Enable blocking for both streams
stream_set_blocking($errorStream, true);
stream_set_blocking($stream, true);

echo "Output: " . stream_get_contents($stream);
echo "Error: " . stream_get_contents($errorStream);

// Close the streams        
fclose($errorStream);
fclose($stream);

exit;

代码返回错误。

代码语言:javascript
复制
Invalid command: [show]

我最好的猜测是,这与路径或其他环境变量有关。有什么想法吗?我正在使用vyatta/vyos映像来测试这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-18 00:42:42

我想你在phpseclib上可能会运气更好。例如:

代码语言:javascript
复制
$ssh = new Net_SSH2('192.168.171.50');
$ssh->login('vyos', 'vyos');

$ssh->read('$');
$ssh->write("show configuration running\n");
echo $ssh->read('$');

这也可能奏效:

代码语言:javascript
复制
$ssh = new Net_SSH2('192.168.171.50');
$ssh->login('vyos', 'vyos');

echo $ssh->exec('show configuration running');

如果这不起作用,这可能是:

代码语言:javascript
复制
$ssh = new Net_SSH2('192.168.171.50');
$ssh->login('vyos', 'vyos');

$ssh->enablePTY();
echo $ssh->exec('show configuration running');

JC的编辑下面:最终工作代码-必须设置终端长度为0或代码挂在寻呼机上。

代码语言:javascript
复制
  include('Net/SSH2.php');
  $ssh = new \Net_SSH2('192.168.171.50');
  $ssh->login('vyos', 'vyos');

  $ssh->read('$');
  $ssh->write("set terminal length 0\n");
  $ssh->read('$');
  $ssh->write("show configuration\n");
  echo $ssh->read('$');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25350739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档