folgendes skript funktioniert bei mir ohne troubs:
<?php
include ('Net/SSH2.php');
$commandline = '/sbin/shutdown -r now'."
";
$ssh = new Net_SSH2('X.X.X.X');
if (!$ssh->login('username', 'pwd')) {
exit('Login Failed');
}
echo $ssh->exec($commandline."
");
$ssh->write('exit '."
");
$ssh->disconnect();
Windows 10, bibliothek liegt unter /UserData/symcon/scripts/Net
lief wieder ohne Änderungen an diesem code nur durch Austausch der phpseclib Bibliothek…
bg
hoep
@hoep herzlichen Dank fürs Feedback. Ich nehme an Du nutzt die 1.0.18. Die werde ich jetzt auch versuchen
Other Branches: 2.0 and master
The 2.0 branch has pretty much the exact same API as the 1.0 branch, save for that it is namespaced, uses PHP5-style constructors (thereby avoiding E_DEPRECATED errors) and requires the use of an autoloader. A few examples.
The master branch has an unstable API that is subject to change. The master branch will eventually turn into 3.0, at which point, this website will be re-designed with an emphasis on that version.
@Nall-chan Ich hätte gestern mehr Mut für das unbekannte zeigen sollen (Ich bin nicht so fit in Bezug auf Module und Klassen)
Ich habe mir heute morgen nochmal Deinen Autoloader angeschaut und einfach mal kopiert und siehe da es funktioniert auf Anhieb auch ohne den Rest Deines Moduls
$autoloader = new AutoloaderPHPseclib('Net\SSH2');
$autoloader->register();
$ssh = new phpseclib\Net\SSH2($ip);
if (!$ssh->login($username, $password)) // Hier der echte Login
{
exit('Login Failed');
}
class AutoloaderPHPseclib
{
private $namespace;
public function __construct($namespace = null)
{
$this->namespace = $namespace;
}
public function register()
{
spl_autoload_register([$this, 'loadClass']);
}
public function loadClass($className)
{
$libpath = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'libs' . DIRECTORY_SEPARATOR;
$includes[] = $libpath . 'phpseclib';
set_include_path(get_include_path() . PATH_SEPARATOR . implode(PATH_SEPARATOR, $includes));
$file = str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
require_once $file;
restore_include_path();
}
}
So der Upgrade hat jetzt ohne Probleme funktioniert und meine SSH2 Bibliotheken funktionieren alle
Nochmals herzlichen Dank an die Community für die Hilfe.
use phpseclib3\Net\SSH2;
$ssh = new SSH2('localhost', 22);
if ($expected != $ssh->getServerPublicHostKey()) {
throw new \Exception('Host key verification failed');
}
Aber da bekomme ich ja immer die Fehlermeldung nach 60sec.
Wer kann mir auf die Sprünge helfen, das auch wieder meine Abfrage per ssh2 beim Draytek funktioniert?
Auf dem Rechner mit dem du die Verbindung aufbaust (in deinem Fall dein IP Symcon Server) muss das Zertifikat für die SSH Verbindung installiert sein. Beim Installieren kommt eine Sicherheitsabfrage die manuell Bestätigt werden muss.
Versuch mal auf deinem Symcon Server mit Putty auf das Ziel zuzugreifen. Nach dem manuellen Bestätigen müsste das dann über Symcon auch funktionieren
Auf dem Symcon Server, habe ich es schon mit Putty ausprobiert, die Abfrage kam auch, die ich auch bestätigt habe.
Aber irgendwie interessiert es Phpseclib nicht, wie gesagt Phpseclib bleibt mit der Fehlermeldung hängen.