Hallo. Ich habe einen Server geschrieben, welcher einen Router steuert. Nun habe ich folgendes Problem: Das Programm soll den Router-PC runterfahren. Mit 'system("halt")' funktioniert das nicht, weil weder der Root noch ein anderer Benutzer angemeldet ist. Welche Möglichkeit hätte ich da noch, oder wer hat sowas schon einmal gemacht.
KEIN telnet benutzen. Nie. Telnet ist die Wurzel allen Übels, fast so schlimm wie Microsoft. Du setzt gefälligst nen sshd mit publickey-Authorisation auf und erlaubst keinen root-login. Als normaler User einloggen und dann per su zu root werden. Alles andere wäre sicherheitstechnisch der blanke Wahnsinn.
~0xdeadbeef postete KEIN telnet benutzen. Nie. Telnet ist die Wurzel allen Übels, fast so schlimm wie Microsoft. Du setzt gefälligst nen sshd mit publickey-Authorisation auf und erlaubst keinen root-login. Als normaler User einloggen und dann per su zu root werden. Alles andere wäre sicherheitstechnisch der blanke Wahnsinn.
genau das meinte ich, ich sagte ja "telnet bzw ssh" -- class God : public ChuckNorris { };
Einfachste Möglichkeit wäre system("halt");, wenn du's von Hand machen willst, rate ich dir, die halt-Sourcen zu lesen. Du findest sie zum Beispiel hier: ftp://ftp.debian.org/debian/pool/main/s/sysvinit/sysvinit_2.84.orig.tar.gz - im wesentlichen läuft es darauf hinaus, dass init (PID: 1) ein SIGSTP geschickt wird und der System-Call reboot mit der magic number 0xCDEF0123 (BMAGIC_HALT) aufgerufen wird.