HP Procurve – Backup Script (PHP)

Hallo zusammen,
ich habe kürzlich aus „Langeweile“ mal eine PHP-Klasse zusammengeschrieben, welche ein Backup der Konfiguration eines HP-Switches macht.
Wichtig: Für diese Klasse muss „libssh2“ installiert sein!

Anbei das Script:

<?php
//
//
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//
//              HP PROCURVE - BACKUP SCRIPT
//
// This class fetches configuration from HP Procurve Switches
// and is able to store result in database or something like that.
//
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
//
// Initial Author:
//      Simon Brecht
//      simon(a)brecht.email
//
//////////////////////////////////////////////////////////////////
//
// CHANGELOG:
//
//      v0.1
//      03.09.2016, Brecht  - Initial Script
//
//////////////////////////////////////////////////////////////////
//
// BUGLIST:
//
//
//
//////////////////////////////////////////////////////////////////

class SCPBackup
{
    // Internal Variable to set Host
    private $host = '127.0.0.1';
    
    // Internal Variable to set Config
    public $config = "";

    // Set Username as String
    public $_scp_user = "admin";
    
    // Set-up multiple passwords in array to try
    public $_scp_pass = array("password1", "password2", "password3");

    //
    // Construct with $host like IPADDR:
    // $z = new SCPBackup("1.2.3.4");
    //
    function __construct($host)
    {
        $this->host = $host;
    }

    //
    // Run with or without Filename like running-config OR startup-config:
    // $z->run();                     # fetches running-config
    // $z->run("startup-config");     # fetches startup-config
    //
    // print($z->config);             # prints fetched config
    //
    public function run($filename = 'running-config')
    {
        $_scp_pass_count = 1;
        foreach($this->_scp_pass as $pass)
        {
            $_scp_host = $this->host;
            $_scp_conn = ssh2_connect($this->host, 22);
            $_scp_auth = ssh2_auth_password($_scp_conn, $this->_scp_user, $pass);
            print("Versuche SSH-Verbindung mit Parametern, Host: ".$_scp_host.", User: ".$this->_scp_user.", Pass: ".$_scp_pass_count);
            if($_scp_auth)
            {
                print("Verbindung erfolgreich, lese Konfiguration...");
                $this->config = "";
                $_scp_sftp = ssh2_sftp($_scp_conn);
                $_scp_config = @fopen("ssh2.sftp://{$_scp_sftp}/cfg/${filename}", 'r');
                clearstatcache();
                while(!feof($_scp_config))
                {
                    if(!$this->config .= fread($_scp_config, 1024))
                    {
                        print("Kann Konfiguration nicht lesen, Verbindung abgebrochen!");
                        $this->config = "";
                        break;
                    }
                }
                fclose($_scp_config);
                if($this->config!="")
                {
                    print($this->config);
                    print("Backup der Konfiguration erfolgreich, Host: ".$_scp_host);
                    break;
                }
                else
                {
                    print("Auf die Konfiguration konnte nicht zugegriffen werden!!! Host: ".$_scp_host.", User: ".$this->_scp_user);
                }
            }
            $_scp_pass_count++;
        }
    }
}
?>

 

Empfohlene Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"