meklis/console-client

SSH/Telnet 客户端

0.0.3 2022-05-26 18:51 UTC

This package is auto-updated.

Last update: 2024-09-10 20:51:56 UTC


README

PHP 库,用于通过 Telnet 和 SSH 连接到设备进行登录/密码连接。

安装

composer require meklis/console-client

示例

SSH 连接到 ZTE 设备

require __DIR__ . '/vendor/autoload.php';

$ssh = new \Meklis\Network\Console\SSH();
$ssh->setDeviceHelper(new \Meklis\Network\Console\Helpers\ZTE());
$ssh->connect("10.0.0.2", 2222); //Ip and custom port 
$ssh->login("login", "password"); 
echo $ssh->exec("show card");

Telnet 连接到 Dlink 设备

require __DIR__ . '/vendor/autoload.php';

$ssh = new \Meklis\Network\Console\Telnet();
$ssh->setDeviceHelper(new \Meklis\Network\Console\Helpers\Dlink());
$ssh->connect("10.0.0.1");
$ssh->login("login", "password");
echo $ssh->exec("show switch");

支持的厂商

  • Alcatel
  • Alaxala
  • Bdcom
  • Cdata
  • Dlink
  • Dell
  • Edgecore
  • Foxgate
  • Gcom
  • Huawei
  • Tp-link
  • Ios
  • ZTE
  • Junos
  • Linux
  • Vsolution
  • Xos

要添加自己的厂商,可以创建一个扩展自 DefaultHelper 的 Helper,并实现 HelperInterface。

Helper 示例

namespace Meklis\Network\Console\Helpers;

class Cdata extends DefaultHelper
{
    protected $prompt = 'OLT(.*?)[>#]';
    protected $userPrompt = 'ame:';
    protected $passwordPrompt = 'ord:';
    protected $afterLoginCommands = [];
    protected $beforeLogoutCommands = [];
    protected $windowSize = null;

    public function isDoubleLoginPrompt(): bool
    {
        if ($this->connectionType === 'ssh') {
            return true;
        }
        return $this->doubleLoginPrompt;
    }
}