Hallo,

Hoe kan ik verbinding maken met een ssh server een een commando uitvoeren via ssh in php, of is dt niet mogelijk?

Alvast bedankt!
theoretisch is alles mogelijk.

je zult denk ik met sockets moeten gaan spelen.. [php]fsockopen[/php]
ik heb nu het volgende gevonden.


if ( array_key_exists(1, $argv) ){
$cfgServer = $argv[1];
}else{
echo "ex: 'php test.php 10.0.0.0' \n";
exit;
}

$cfgPort = 23; //port, 22 if SSH
$cfgTimeOut = 10;

$usenet = fsockopen($cfgServer, $cfgPort, $errno, $errstr), $cfgTimeOut);

if(!$usenet){
echo "Connexion failed\n";
exit();
}else{
echo "Connected\n";
fputs ($usenet, "password\r\n");
fputs ($usenet, "en\r\n");
fputs ($usenet, "password\r\n");
fputs ($usenet, "sh mac-address-table\r\n");
fputs ($usenet, " "); // this space bar is this for long output

// this skip non essential text
$j = 0;
while ($j<16){
fgets($usenet, 128);
$j++;
}
stream_set_timeout($usenet, 2); // set the timeout for the fgets
$j = 0;
while (!feof($usenet)){
$ret = fgets($usenet, 128);
$ret = str_replace("\r", '', $ret);
$ret = str_replace("\n", "", $ret);
if (ereg("FastEthernet", $ret)){
echo "$ret \n";
}
if (ereg('--More--', $ret) ){
fputs ($usenet, " "); // for following page
}
$info = stream_get_meta_data($usenet);
if ($info['timed_out']) {
$j++;
}
if ($j >2){
fputs ($usenet, "lo");
break;
}
}
}
echo "End.\r\n";
?>




Dit vond ik op de php site om een Sisco router te configureren. Maar ik vraag me af of het ook werkt voor een ssh verbinding
hmm, ik heb de code getest maar in het log van de server met ssh, zie ik dit staan: '22:08:40 sshd Bad protocol version identification 'root' from 192.168.1.4'

Gaat dus niet werken vrees ik. Is er misschien een andere manier?


Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.

die had ik inmiddels al gevonden. De enige vraag die ik nog heb: Hoekrijg ik het resultaat van de code, daarmee bedoel ik stel dat ik zeg 'echo test', hoe zorg ik ervoor dat het resultaat 'test' dan op het scherm komt?

heb nu de volgende code:

<?php
$connection = ssh2_connect('10.0.0.4', 22);
ssh2_auth_password($connection, 'user', 'pass');

$stream = ssh2_exec($connection, "echo test");
$result_err = stream_get_contents($stream, -1, -1);
echo $result_err ;
?>


Deze code geeft een lege echo, waarom?
Als jij via ssh echo test doet dan staat dat op het scherm. Echter wel op de server dus.
SanThe schreef op 29.11.2008 15:56
Als jij via ssh echo test doet dan staat dat op het scherm. Echter wel op de server dus.


Nou, dat is niet het geval omdat er een nieuwe bash sessie wordt gestart, en deze wordt niet naar het scherm geschreven :).
Willem-Aart schreef op 29.11.2008 16:15
[quote='SanThe schreef op 29.11.2008 15:56']Als jij via ssh echo test doet dan staat dat op het scherm. Echter wel op de server dus.


Nou, dat is niet het geval omdat er een nieuwe bash sessie wordt gestart, en deze wordt niet naar het scherm geschreven :).[/quote]
Bash schrijft standaard naar het scherm.
SanThe schreef op 29.11.2008 16:17
[quote='Willem-Aart schreef op 29.11.2008 16:15'][quote='SanThe schreef op 29.11.2008 15:56']Als jij via ssh echo test doet dan staat dat op het scherm. Echter wel op de server dus.


Nou, dat is niet het geval omdat er een nieuwe bash sessie wordt gestart, en deze wordt niet naar het scherm geschreven :).[/quote]
Bash schrijft standaard naar het scherm.[/quote]

Als ik op mijn server een SSH sessie open krijg toch echt geen extra output op m'n scherm te zien.
is er wel een manier om het ersultaat in een echo te krijgen?

Reageren