server shutdown

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von wischy, 29. Mai 2006 .

Schlagworte:
  1. 29. Mai 2006
    Also Leute, folgende Situation:
    Hab nen Root, alle Zugänge usw. will allerdings KEINEM meiner Mods irgendwelche Rechte für den Account geben, nun hab ich mir überlegt, einen .htacces geschützten Bereich einzuführen, in dem mehrere Scripte sind, bspw. ein reboot bzw. shutdown script, hat jemand ne ahnung wie sowa saussieht, oder wo ich sowas fertig herbekomme?? Danke schonma im Vorraus 10er is Ehrensache
     
  2. 29. Mai 2006
    also wennde willst, kann ich das in mein webinterface einbaun, ist kein großes problem

    musst halt dann in den späteren options so andere sachen raustun, wie prozesse ansehen etc
     
  3. 29. Mai 2006
    hm.. eigendlich wärn mir einfache php scripts o.ä lieber^^ einfach script per browser aufrufen und schon rebootet er... sowas wär n1^^
     
  4. 29. Mai 2006
    Naja, das sollte man eigentlich vermeiden und wenn man sowas einsetzt, dann muss man das schon möglichst gut schützen.
    Aber ansonsten müsste das doch eigentlich sehr einfach mittels system() in PHP zu machen sein. Was für OS läuft denn auf dem Server?
     
  5. 29. Mai 2006
    jojo schützen werd ich das ganz sicher xD bin ja nich soooo dumm^^

    auf dem os läuft stink normales linux^^ mit genau diesem kernel "Kernel version 2.6.9-1.667smp" wenns hilft^^
     
  6. 30. Mai 2006
    So, zu deinem Glück hat mich das jetzt auch mal interessiert und ich habe ein bisschen rumgeschaut und ausprobiert

    Folgendes Perl-Script kam dabei raus:
    Code:
    #!/usr/bin/perl -w
    
    use CGI::Carp qw(fatalsToBrowser);
    
    my $Input;
    my $Output;
    
    read(STDIN, $Input, $ENV{'CONTENT_LENGTH'});
    
    (my $Name, my $Value) = split(/=/, $Input);
    
    
    unless($Name =~ syscom)
     {
     print "Content-Type: text/html\n\n";
     print "<html>\n";
     print "<head>\n";
     print "<title>Server herunterfahren/rebooten</title>\n";
     print "</head>\n";
     print "<body>\n";
     print "<h1>System</h1>\n";
     print "<form action='sd.pl' method='post'>\n"; 
     print "<input type='submit' name='syscom' value='Reboot'>\n"; 
     print "<input type='submit' name='syscom' value='Shutdown'>\n"; 
     print "</form>\n"; 
     print "</body>\n";
     print "</html>\n";
    }
    else {
     if($Value eq "Shutdown")
     {
     print "Content-Type: text/html\n\n";
     print "<html>\n";
     print "<head>\n";
     print "<title>Server wird heruntergefahren...</title>\n";
     print "</head>\n";
     print "<body>\n";
     print "<h1>Server wird heruntergefahren...</h1>\n";
     print "</body>\n";
     print "</html>\n";
     system("sudo /sbin/shutdown -h now");
     }
     if($Value eq "Reboot")
     {
     print "Content-Type: text/html\n\n";
     print "<html>\n";
     print "<head>\n";
     print "<title>Server wird neu gestartet...</title>\n";
     print "</head>\n";
     print "<body>\n";
     print "<h1>Server wird neu gestartet...</h1>\n";
     print "</body>\n";
     print "</html>\n";
     system("sudo /sbin/reboot -f");
     }
     
    }
    
    jaja, ich weiß... es ist nicht besonders schön und so... hab's auf die schnelle gemacht und es erfüllt seinen Zweck.
    Erstell im CGI-Bin deines Servers ne datei sd.pl und kopier den Code darein. Alternativ kannst du die ganzen HTMl Sachen auch in eine PHP oder so packen.

    Ich weiß jetzt nicht, wie bewandert du in Linux und so bist, von daher poste ich einfach mal ne kleine Anleitung:
    1. die sd.pl ausführbar machen
    2. Damit das shutdown/reboot Kommando ausgeführt werden kann braucht man superuser Status, deshalb das "sudo".
    Allerdings geht das nicht so einfach, man muss den Benutzer (der den Server gestartet hat) in die Liste der sudoers eintragen.
    Falls du nicht weißt, welcher User den Server gestartet hat und du (wie ich) nen Apache hast, dann such die File httpd.conf im Apache Verzeichnis. Mit dem Befehl cat httpd.conf | grep ^User bekommst du denn entsprechenden Usernamen angezeigt.
    3. Um nun die Liste der Sudoers zu editieren musst du root sein, dann gibts du visudo ein und drückst i um in den Insert-Modus zu kommen.
    Foldendes ergänzt du dann:
    Cmnd_Alias SHUTDOWN = /sbin/shutdown -h now
    Cmnd_Alias REBOOT = /sbin/reboot -f

    BenutzerName ALL=NOPASSWD: SHUTDOWN
    BenutzerName ALL=NOPASSWD: REBOOT

    Wobei BenutzerName der Benutzer ist, der den Server gestartet hat (siehe Schritt vorher).
    Die Bedeutung davon: Der entsprechende Benutzer darf nun die Kommandos shutdown und reboot mittels sudo mit superuser Privilegien ausführen, ohne das das root Passwort (oder das eines anderen superusers) angegeben werden muss.
    Zum beenden und speichern :wq eingeben (inkl. dem Doppelpunkt!)

    Dann nur noch http://localhost/cgi-bin/sd.pl aufrufen und Spass beim reboot bzw. shutdown haben

    Gruß Resus
     
  7. 31. Mai 2006
    Was genau meinst du damit?
    Also man muss sie natürlich entsprechend schützen, da sie vom Prinzip her jeder auf dem Server ausführen könnte, der an den Cgi-Bin respektive die Perl-Datei ran kommt!
     
  8. 31. Mai 2006
    und einfach nen automatischer shutdown?? ohne irgendfwelche rechte usw?? einfach nur htacces... fertig??
     
  9. 31. Mai 2006
    Ich bezweifel, dass das möglich ist. Das würde ja bedeuten, dass prinzipiell jeder das Recht hätte den Server herunterzufahren. Das ginge wohl nur, wenn ein Benutzer mit Superuser Rechten den Web-Server gestartet hat, aber das ist eine ziemlich blöde Idee!

    Ansonsten müsstest du einen anderen Weg suchen, als über den Webserver zu gehen.

    Aber wofür genau brauchst du es denn jetzt? Ich meine die vier Einträge zu machen ist ja kein Akt, ist das zufällig nur ein gemieteter Root Server oder sowas? In einem solchen Fall könntest du es wohl vergessen, weil dir kein Provider diese Möglichkeiten geben wird.
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.