[php][Linux] Reboot ?

mckani

Erfahrenes Mitglied
So Moin Leutz, ich bins schon wieder :D

Dieses mal gehts um ein Root Server von mir und PHP


Wie ganz bestimmt viele von euch gesehen haben, haben die meisten "Webhoster" Einen interface wo man die rootserver Rebooten kann.!
So nun hab ich mein eigenes Root server aber mein webhoster hat kein Interface für Rebooten :nospam: :o)
Und ich will mir jetzt einen eigenen basteln.
Das script soll Als "root" den server Rebooten.! Eigentlich hatt ich noch gedacht das der interface noch das passwort des user "root"´s ändert, aber das kann ich ja später noch machen ^^.Also nur rebooten soll das script.
nun die frage:
1.) Kennt da jemand einen script / Interface "umsonst" den man sich auf das root installieren kann ohne VIEL ahnung von Linux zu haben.!
2.) Kann mir einer von euch vielleicht nen code geben was mir weiterhilft?
3.) Kennt vielleicht einer einen tutorial ? Was mir weiterhelfen würde.:)

// Edit..
Ich habe im board schon gesucht aber nichts gefunden das mir weiterhelfen konnte..:(
Und
Ich habs mal mit
PHP:
<?php
$output = shell_exec('reboot');
echo "<pre>$output</pre>";
?>

Probiert. Und er zeigt mir folgendes an
Code:
Warning: shell_exec(): Cannot execute using backquotes in Safe Mode in /srv/www/htdocs/web1/html/reboot.php on line 2
die safemode ist OFF

Ich bin für jede hilfe dankbar

Grüße
 
Zuletzt bearbeitet:
Apache, und dementsprechend auch PHP, laeuft ja in der Regel als nobody.
Und ich gehe stark davon aus, dass dieser User nicht rebooten darf.

Da es, wenn ich mich recht erinnere, keinen Befehl gibt um sich eine Shell zu holen wo Du dann frei arbeiten kannst wuerde ich vorschlagen dass ueber die SSH-Funktionen zu machen.
Um diese nutzen zu koennen musst Du noch die SSH2-Extension installieren.
Dort kannst Du Dir dann auch eine Shell holen und machen was Du willst.

Aus Sicherheitsgruenden sollte ein solches Script natuerlich in einer gesicherten Umgebung liegen. Stichwort: htaccess. ;)
 
*g* ich war grad dabei das mit dem ssh2 zu versuchen und hatte mich gewundert warum es nicht ...
Und Natürlich werd ich das verzeichnis Schützen mit htaccess ;)
ich gugg mir jetzt mal das extension an...
Thx.
 
grml. ich hab das schon installiert ° -.- °

und damit
Code:
<?php

// ssh protocols
// note: once openShell method is used, cmdExec does not work

class ssh2 {

  private $host = '62.75.x.x;
  private $user = 'root';
  private $port = '22';
  private $password = 'xxPasswortxx';
  private $con = null;
  private $shell_type = 'xterm';
  private $shell = null;
  private $log = '';

  function __construct($host='', $port=''  ) {

     if( $host!='' ) $this->host  = $host;
     if( $port!='' ) $this->port  = $port;

     $this->con  = ssh2_connect($this->host, $this->port);
     if( !$this->con ) {
       $this->log .= "Connection failed !"; 
     }

  }

  function authPassword( $user = '', $password = '' ) {

     if( $user!='' ) $this->user  = $user;
     if( $password!='' ) $this->password  = $password;

     if( !ssh2_auth_password( $this->con, $this->user, $this->password ) ) {
       $this->log .= "Authorization failed !"; 
     }

  }

  function openShell( $shell_type = '' ) {

       if ( $shell_type != '' ) $this->shell_type = $shell_type;
   $this->shell = ssh2_shell( $this->con,  $this->shell_type );
   if( !$this->shell ) $this->log .= " Shell connection failed !";

  }

  function writeShell( $command = '' ) {

   fwrite($this->shell, $command."\n");

  }

  function cmdExec( ) {

       $argc = func_num_args();
       $argv = func_get_args();

   $cmd = '';
   for( $i=0; $i<$argc ; $i++) {
       if( $i != ($argc-1) ) {
         $cmd .= $argv[$i]." && ";
       }else{
         $cmd .= $argv[$i];
       }
   }
   echo $cmd;

       $stream = ssh2_exec( $this->con, $cmd );
   stream_set_blocking( $stream, true );
   return fread( $stream, 4096 );

  }

  function getLog() {

     return $this->log; 

  }

}
ssh2_exec('reboot');
?>

Will es nicht ...
:/
 
Gibt es denn eine Fehlermeldung?

Ich nutze die SSH-Funktionen um System-User anzulegen und hab damit keinerlei Probleme.
Ich hol mir einfach eine Shell und kann dann dort mit fwrite() und fread() arbeiten.
 
hmmm..
Code:
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /srv/www/htdocs/web1/html/reboot.php on line 8
line 8
Code:
private $host = '62.75.x.x;
Dieses fehler gibet..
 
Ich nehme an Du nutzt PHP4.
private ist aber erst ab PHP5 bekannt.

Ersetz das mal durch var.
Ausserdem muss der Konstruktor fuer PHP4 genauso heissen wie die Klasse selbst.
 
*g* jo übersehen :D
aber es Funkt. trozdem net. Es gibt kein fehler aber auch wird das command nicht ausgeführt..
Ich habs mit sudo probiert. Sudo will es irgentwie auch net. :( keineAhnung was ich noch machen kann...
 
Probier mal das: (Nicht vergessen das root-Passwort anzupassen ;) )
PHP:
$ssh=ssh2_connect("localhost");
ssh2_auth_password($ssh,"root","blablabla");
ssh2_exec($ssh,"reboot");
fclose($ssh):
oder
PHP:
$ssh=ssh2_connect("localhost");
ssh2_auth_password($ssh,"root","blablabla");
$shell=ssh2_shell($ssh);
fwrite($shell,"reboot\n");
fclose($ssh):
 
hmmm...
Code:
Fatal error: Call to undefined function: ssh2_connect() in /srv/www/htdocs/web1/html/reboot.php on line 2
 
Zurück