[php][Linux] Reboot ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [php][Linux] Reboot ?

    Hi Ihr,
    Ich habe mal wieder eine frage...
    Unzwar will ich mir grad einen kleinen interface bauen und ich wollte wissen wie es möglich ist, ein Server zu rebooten.
    Natürlich ist es mein eigener Root server.

    ich habe es bis jetzt mit ssh2_connect versucht und durch sudo

    Erster versuch:
    PHP-Code:
    <?php

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

    class ssh2 {

      var 
    $host '62.75.x.x';
      var 
    $user 'root';
      var 
    $port '22';
      var 
    $password 'xxPasswortxx';
      var 
    $con null;
      var 
    $shell_type 'xterm';
      var 
    $shell null;
      var 
    $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$streamtrue );
       return 
    fread$stream4096 );
          
    ssh2_exec(reboot);

      }

      function 
    getLog() {

         return 
    $this->log

      }

    }
    ?>
    Kein Fehler... oder sonstige hinweiße zu sehen. Aber es führt das Reboot auch nicht aus..

    2.´te versuch
    Sudo
    PHP-Code:
    <?
    passthru('echo reboot | sudo /usr/bin/php -f /sbin/reboot.sh');
    ?>
    inhalt der reboot.sh
    Code:
    ! /bin/sh
    /sbin/shutdown -r 0
    Und das Funktioniert auch nicht.. Kein Fehler,Kein Hinweiß,Aber auch kein Reboot.

    Hat einer ne ahnung was ich falsch mache ?
    oder hat einer von euch vielleicht einen code der mir weiterhelfen könnte...
    Ich habe hier im Forum so wie im Google gesucht, aber nichts gefunden

    Grüße
    Mc-kani
    Zuletzt geändert von McKani; 22.10.2005, 22:50.

  • #2
    kann mir wirklich keiner helfen ?

    Kommentar


    • #3
      Das würd mich auch sehr Intressiern.

      Kommentar


      • #4
        Hallo..

        Was soll denn dein erster Versuch bewirken?
        Das ist eine Klasse die du da hast.. SCHÖN
        Dazu ist sie noch unvollständig.
        Es wird die Funktion ssh2_shell aufgerufen die nicht existiert..
        Also gehts damit schon mal nicht..
        (Abgesehen davon das du nicht mal eine Instanz dieser Klasse in deinem Schnipsel benutzt)

        mit "visudo" trägst du in die datei "/etc/sudoers" folgende Zeile ein

        www-data ALL=(ALL) NOPASSWD: /sbin/reboot

        wobei "www-data" und "/sbin/reboot" angepasst werden müssen.. Jenachdem welches System du benutzt.


        Wenn du jetzt in deinem Script ein

        PHP-Code:
        passthru('/usr/bin/sudo /sbin/reboot'); 
        ausführst sollte der Server rebooten.
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Ich habe suse 9.1

          Ich habe das mit www-data gegen wwwrun geändert, soweit ich mich erinern kann, sollte das auch richtig sein.!
          ich habe /sbin/reboot müsste auch richtig sein, hab sie auch so stehen lassen, aber es Funktioniert trozdem nicht?


          Mein Sudoers
          Code:
          # sudoers file.
          #
          # This file MUST be edited with the 'visudo' command as root.
          #
          # See the sudoers man page for the details on how to write a sudoers file.
          #
          
          # Host alias specification
          
          # User alias specification
          
          # Cmnd alias specification
          
          # Defaults specification
          Defaults targetpw    # ask for the password of the target user i.e. root
          %users ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!
          
          # User privilege specification
          # You should not use sudo as root in an SELinux environment
          # If you use SELinux, remove the following line
          root    ALL=(ALL) ALL
          wwwrun ALL=(ALL) NOPASSWD: /sbin/reboot
          
          # Uncomment to allow people in group wheel to run all commands
          # %wheel        ALL=(ALL)       ALL
          
          # Same thing without a password
          # %wheel        ALL=(ALL)       NOPASSWD: ALL
          
          # Samples
          # %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
          # %users  localhost=/sbin/shutdown -h now

          ..// edit: Muß ich das mit visudo machen ?
          ich komm irgentwie nicht klar mit visudo ^^ "Linuxanfänger"
          ich mach das immer mit mcedit
          Zuletzt geändert von McKani; 23.10.2005, 17:39.

          Kommentar

          Lädt...
          X